diff -Nru curl-7.21.2/acinclude.m4 curl-7.21.3/acinclude.m4 --- curl-7.21.2/acinclude.m4 2010-09-18 23:00:20.000000000 +0200 +++ curl-7.21.3/acinclude.m4 2010-12-01 19:45:49.000000000 +0100 @@ -3246,3 +3246,44 @@ fi fi ]) + + +dnl CURL_GENERATE_CONFIGUREHELP_PM +dnl ------------------------------------------------- +dnl Generate test harness configurehelp.pm module, defining and +dnl initializing some perl variables with values which are known +dnl when the configure script runs. For portability reasons, test +dnl harness needs information on how to run the C preprocessor. + +AC_DEFUN([CURL_GENERATE_CONFIGUREHELP_PM], [ + AC_REQUIRE([AC_PROG_CPP])dnl + tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null` + if test -z "$tmp_cpp"; then + tmp_cpp='cpp' + fi + cat >./tests/configurehelp.pm <<_EOF +[@%:@] This is a generated file. Do not edit. + +package configurehelp; + +use strict; +use warnings; +use Exporter; + +use vars qw( + @ISA + @EXPORT_OK + \$Cpreprocessor + ); + +@ISA = qw(Exporter); + +@EXPORT_OK = qw( + \$Cpreprocessor + ); + +\$Cpreprocessor = '$tmp_cpp'; + +1; +_EOF +]) diff -Nru curl-7.21.2/buildconf curl-7.21.3/buildconf --- curl-7.21.2/buildconf 2010-09-18 23:00:20.000000000 +0200 +++ curl-7.21.3/buildconf 2010-12-01 19:45:49.000000000 +0100 @@ -293,6 +293,7 @@ config.status \ config.sub \ configure \ + configurehelp.pm \ curl-config \ curlbuild.h \ depcomp \ @@ -364,6 +365,12 @@ else buildhost=`./config.guess 2>/dev/null|head -n 1` case $buildhost in + *-*-darwin*) + need_lt_major=1 + need_lt_minor=5 + need_lt_patch=26 + need_lt_check="yes" + ;; *-*-hpux*) need_lt_major=1 need_lt_minor=5 diff -Nru curl-7.21.2/CHANGES curl-7.21.3/CHANGES --- curl-7.21.2/CHANGES 2010-10-13 00:04:32.000000000 +0200 +++ curl-7.21.3/CHANGES 2010-12-15 15:08:04.000000000 +0100 @@ -6,6 +6,731 @@ Changelog +Daniel Stenberg (15 Dec 2010) +- RELEASE-NOTES: synced with a865bd9fbaaa43e5c + +- IsPipeliningPossible: only for HTTP + + The function that checks if pipelining is possible now requires the HTTP + bit to be set so that it doesn't mistakenly tries to do it for other + protocols. + + Bug: http://curl.haxx.se/mail/lib-2010-12/0152.html + Reported by: Dmitri Shubin + +- multi_runsingle: don't timeout completed handles + + The generic timeout code must not check easy handles that are already + completed. Going to completed (again) within there risked decreasing the + number of alive handles again and thus it could go negative. + + This regression bug was added in 7.21.2 in commit ca10e28f06f1 + +- symbols-in-versions: CURLOPT_KEYPASSWD fixed + + It was added in 7.17.0 and is not deprecated + +- RELEASE-NOTES: synced with c28443c551825 + +Dan Fandrich (8 Dec 2010) +- Mention that using other libraries can affect app licensing + +Yang Tse (7 Dec 2010) +- easy: fix compiler warning: end-of-loop code not reached + +Daniel Stenberg (6 Dec 2010) +- disconnect: pass on the dead_connection argument + + Cleanup fix after Kamil's commit 5c7c9a768d0093 + +Yang Tse (6 Dec 2010) +- sws: fix compier warning: external definition with no prior declaration + +Daniel Stenberg (6 Dec 2010) +- [Heinrich Ko brought this change] + + ossl_connect_common: detect connection re-use + + ossl_connect_common() now checks whether or not 'struct + connectdata->state' is equal 'ssl_connection_complete' and if so, will + return CURLE_OK with 'done' set to 'TRUE'. This check prevents + ossl_connect_common() from creating a new ssl connection on an existing + ssl session which causes openssl to fail when it tries to parse an + encrypted TLS packet since the cipher data was effectively thrown away + when the new ssl connection was created. + + Bug: http://curl.haxx.se/mail/lib-2010-11/0169.html + +Kamil Dudka (6 Dec 2010) +- url: provide dead_connection flag in Curl_handler::disconnect + + It helps to prevent a hangup with some FTP servers in case idle session + timeout has exceeded. But it may be useful also for other protocols + that send any quit message on disconnect. Currently used by FTP, POP3, + IMAP and SMTP. + +Yang Tse (6 Dec 2010) +- ssh: fix a download resume point calculation + +Daniel Stenberg (5 Dec 2010) +- Curl_wait_for_resolv: correct timeout + + When looping in this function and checking for the timeout being + expired, it was not updating the reference time when calculating the + timediff since previous round which made it think each subsequent loop + to have taken longer than it actually did. + + I also modified the function to use the generic Curl_timeleft() function + instead of the custom logic. + + Bug: http://curl.haxx.se/bug/view.cgi?id=3112579 + +- Curl_send/recv_plain: return errno on failure + + When send() and recv() fail, we now store the errno value to allow the + app to access it. + + Bug: http://curl.haxx.se/bug/view.cgi?id=3128121 + Reported by: Yuri + +Guenter Knauf (5 Dec 2010) +- Updated OpenSSL version. + +Yang Tse (4 Dec 2010) +- fix compiler warning: conversion may lose significant bits + +- fix compiler warning: assignment within conditional expression + +- fix getinfo CURLINFO_LOCAL* for reused connections (take 2) follow-up + + - Show address string from proper buffer in case of connection failure. + + - Try next address when inet_ntop() fails. + +Daniel Stenberg (3 Dec 2010) +- version-check: added brief documentation + + and the traditional source header + +Yang Tse (3 Dec 2010) +- build: provide SIZEOF_SIZE_T DOS definition + +- build: lib/config.dos renamed to lib/config-dos.h + +- build: provide SIZEOF_SIZE_T VMS definition + +- build: move config-vms.h from subdir 'packages/vms' into 'lib' + +- build: provide SIZEOF_SIZE_T definition for non-configure builds + +- build: provide SIZEOF_SIZE_T netware definition + +- configure: undo using autobuilds to temporarily verify strict aliasing warnings. + +- fix compiler warning: rounding, sign extension, or loss of accuracy may result + +- fix compiler warning: statement is not reachable + +- fix compiler warning: conversion may lose significant bits + +- connect: fix compiler warning: unused variable + +- fix getinfo CURLINFO_LOCAL* for reused connections (take 2) + +- fix getinfo CURLINFO_LOCAL* for reused connections follow-up + + Reinstate IPV6 build variable that got removed. + +- fix getinfo CURLINFO_LOCAL* for reused connections + + Failed to commit this file changes along with the others. + +- fix getinfo CURLINFO_LOCAL* for reused connections + +- atoi: remove atoi usage + +- multi: fix compiler warning: conversion may lose significant bits follow-up + +- ftp: fix 'bool' data type implementation dependant usage + +- multi: fix compiler warning: conversion may lose significant bits + +- multi: fix compiler warning: enumerated type mixed with another type + +- hostip: edit comment + +- xattr: fix compiler warning: enumerated type mixed with another type + +- s/isspace/ISSPACE + +- symbol-scan: use configure script knowledge about how to run the C preprocessor + +- ignore file generated by configure + +- curl_multi_info_read: fix compiler warning: conversion may lose significant bits + +- inet_pton: fix compiler warning + + warning C4146: unary minus operator applied to unsigned type, result still unsigned + +- Curl_getaddrinfo_ex: sanitize function results follow-up. + +- Curl_getaddrinfo_ex: sanitize function results. + + Ensure that spurious results from system's getaddrinfo() ares not propagated + by Curl_getaddrinfo_ex() into the library. + + Also ensure that the ai_addrlen member of Curl_getaddrinfo_ex()'s output linked + list of Curl_addrinfo structures has appropriate family-specific address size. + +Kamil Dudka (22 Nov 2010) +- openldap: use remote port in URL passed to ldap_init_fd() + + ... not the proxy port. It makes no difference unless a proxy is used. + +Yang Tse (20 Nov 2010) +- gtls: define and use gtls_EAGAIN, gtls_EINTR and gtls_EIO. + + Winsock builds clobber some errno.h defines in setup_once. + +Dan Fandrich (19 Nov 2010) +- Added a couple examples that were missing from the tar ball + +- Check for errors while preprocessing curl.h in test 1119 + + This showed a problem when running the test out-of-tree, so + an include path is now being added to pick up the generated + curlbuild.h file. + +- Use the 3-argument open for compatibility with older perls + +- [Matthias Bolte brought this change] + + Detect socket errors in GnuTLS on Windows + + On Windows, translate WSAGetLastError() to errno values as GNU + TLS does it internally, too. This is necessary because send() and + recv() on Windows don't set errno when they fail but GNU TLS + expects a proper errno value. + + Bug: http://curl.haxx.se/bug/view.cgi?id=3110991 + +Yang Tse (19 Nov 2010) +- test servers: fix strict aliasing compiler warnings + +- configure: use autobuilds to temporarily verify strict aliasing warnings. + + Temporarily, When cross-compiling with gcc 3.0 or later, enable strict aliasing + rules and warnings. Given that cross-compiled targets autobuilds do not run the + +Julien Chaffraix (17 Nov 2010) +- configure: Prevent link errors with --librtmp. + + If --librtmp was specified but pkg-config could not find the librtmp + file, we would have undefined symbols when linking curl. + + We prevent this error by disabling this case as suggested on the mailing + list. + +Daniel Stenberg (15 Nov 2010) +- RELEASE-NOTES: synced with cbf4961bf3e4 + +- gnutls->handshake: improved timeout handling + + When no timeout is set, we call the socket_ready function with a timeout + value of 0 during handshake, which makes it loop too much/fast in this + function. It also made this function return CURLE_OPERATION_TIMEDOUT + wrongly on a slow handshake. + + However, the particular bug report that highlighted this problem is not + solved by this fix, as this fix only makes the more proper error get + reported instead. + + Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=594150 + Reported by: Johannes Ernst + +Julien Chaffraix (13 Nov 2010) +- urldata: Capitalize enum protect_level values. + + This makes it easier to spot the enum values from the variables. + Removed some unneeded DEBUGASSERT added in the previous commit. + +- security: tighten enum protection_level usage. + + While changing Curl_sec_read_msg to accept an enum protection_level + instead of an int, I went ahead and fixed the usage of the associated + fields. + + Some code was assuming that prot_clear == 0. Fixed those to use the + proper value. Added assertions prior to any code that would set the + protection level. + +Yang Tse (13 Nov 2010) +- configure: fix autoconf 2.68 warning: no AC_LANG_SOURCE call detected in body + +Daniel Stenberg (12 Nov 2010) +- curl.1: "a file", not an + +- version-check.pl: display version number for symbols + + This script is the start of a helper tool that scans a source code and + outputs the most recent libcurl version it finds symbols for. Meaning + that if there's no conditions in the code, that's the earliest libcurl + version the scanned code requires. + + It is not added to the Makefile.am yet as it is still a bit crude, but + I'm committing it to keep it and allow us to work on it. + +- [Adam Light brought this change] + + Makefile.vc6: fixed the xattr.c compile + +Julien Chaffraix (12 Nov 2010) +- krb5: Use GSS_ERROR to check for error. + + This is the advised way of checking for errors in the GSS-API RFC. + Also added some '\n' to the error message so that they are not mixed + with other outputs. + +- security: Pass the right parameter to init. + + init is expecting app_data. Passing it the struct connecdata would make + us crash later. + +Daniel Stenberg (11 Nov 2010) +- HTTP Auth: Add CURLAUTH_ONLY + + This is a meta symbol. OR this value together with a single specific + auth value to force libcurl to probe for un-restricted auth and if not, + only that single auth algorithm is acceptable. + + For example you can use CURLAUTH_DIGEST|CURLAUTH_ONLY to make libcurl + first probe for what method to use, but yet only consider Digest to be + acceptable. + + Using _only_ CURLAUTH_DIGEST without the CURLAUTH_ONLY field, will make + libcurl explicitly use Digest right away and not do any probing. + +- ip_version: moved to connection struct + + The IP version choice was previously only in the UserDefined struct + within the SessionHandle, but since we sometimes alter that option + during a request we need to have it on a per-connection basis. + + I also moved more "init conn" code into the allocate_conn() function + which is designed for that purpose more or less. + +Yang Tse (11 Nov 2010) +- buildconf: MAC OS X requires libtool version 1.5.26 or newer + + MAC OS X requires libtool version 1.5.26 or newer, otherwise + configure will mishandle *.dSYM directories when it runs. + +- configure: remove temporary autobuilds exercising of xattr function tests + +- configure: use autobuilds to temporarily exercise xattr function tests + +- xattr: portability fix + +- curl-functions: provide xattr function tests that also check number of arguments + +Daniel Stenberg (10 Nov 2010) +- test1120: verify FTP response 421 + + curl mustn't try to use the control connection after the 421 is received + +- ftpserver.pl: spellfix comment + +- [Rutger Hofman brought this change] + + TFTP: resend the correct data + + I found a bug in tftp_tx() in tftp.c. If a data resend is done after + reception of an ACK/OACK, the call to sendto is wrong. + +- [Stefan Tomanek brought this change] + + write extended attributes by using fsetxattr + + Instead of reopening the downloaded file, fsetxattr uses the (already + open) file descriptor to attach extended attributes. This makes the + procedure more robust against errors caused by moved or deleted files. + +Dan Fandrich (9 Nov 2010) +- Check for getinfo errors before setting attributes + +Kamil Dudka (9 Nov 2010) +- ftp: treat server's response 421 as CURLE_OPERATION_TIMEDOUT + + Bug: https://bugzilla.redhat.com/650255 + Reported by: Simon H. + +Daniel Stenberg (9 Nov 2010) +- symbols-in-version: add CURL_SOCKET_BAD + + I also documented the filtering logic in the symbol-scan.pl function to + clarify why not all CURL_* symbols are included. + +Yang Tse (9 Nov 2010) +- serial number bump + +Kamil Dudka (8 Nov 2010) +- ftp: close connection as soon as ABOR has been sent + + ... and do not send ABOR unless really necessary. + + Bug: https://bugzilla.redhat.com/649347 + Reported by: Simon H. + +Daniel Stenberg (8 Nov 2010) +- RELEASE-NOTES: synced with fc6c4c10f9faab08 + + I also recounted and updated the command line and libcurl options. + +- help: indent the --xattr option like the others + +- curl.1: --resolve documented + +- CURLOPT_RESOLVE: documented + +- CURLOPT_USE_SSL: move from FTP options to connection options + +- xattr-check: correct the comment as well + +- xattr: use const char * for const strings + +- setxattr: fix the checks + + My copy and paste job was a little too much copy and I missed to adjust + it properly to sys/xattr.h all over and this is a fix to cure that. + +- CURLOPT_RESOLVE: added + + CURLOPT_RESOLVE is a new option that sends along a curl_slist with + name:port:address sets that will populate the DNS cache with entries so + that request can be "fooled" to use another host than what otherwise + would've been used. Previously we've encouraged the use of Host: for + that when dealing with HTTP, but this new feature has the added bonus + that it allows the name from the URL to be used for TLS SNI and server + certificate name checks as well. + + This is a first change. Surely more will follow to make it decent. + +Yang Tse (8 Nov 2010) +- fix compiler warning + +Dan Fandrich (7 Nov 2010) +- Added os-specific.c and xattr.c to the Symbian build files + +Yang Tse (7 Nov 2010) +- xattr: fix VisualStudio builds + +- fix snapshot generation + +Daniel Stenberg (5 Nov 2010) +- --libcurl: simplify output + + Removed the code that was needed for libcurl before 7.19.0 which now is + more than two years old. + + Simplified the top comment and corrected the URL. + +- [Alfred Gebert brought this change] + + LDAP: detect non-binary attributes properly + + If the query result has a binary attribute, the binary attribute is + base64 encoded. But all following non binary attributes are also base64 + encoded which is wrong. + + This is a test (LDAP server is public). + + curl + ldap://x500.bund.de:389/o=Bund,c=DE?userCertificate,certificateSerialNumber?sub + ?cn=*Woehleke* + +- xattr: add configure check and #ifdefs + + setxattr is a glibc call to set extended attributes, so configure now + checks for it and the code is adapted to only build when the + functionality is present. + +- [Stefan Tomanek brought this change] + + save metadata to extended file attributes + + It is often convinient to track back the source of a once downloaded + file; this patch makes curl store the source URL and other metadata + alongside the retrieved file by using the extended attributes (if + supported by the file system and enabled by --xattr). + +- test: remove test 580 + + Test 580 is removed again for two reasons: + + 1) Some compilers aren't satisfied by just a data variable called 'test' + when first.o wants a function called 'test'. The Solaris compiler says + "ld: warning: symbol `test' has differing types:" while the AIX compiler + downright rejects it. + + 2) Test case 1119 that was added after this test is way more complete + and cover everything test 580 does and more without introducing the same + problems. + +- Revert: use Host: name for SNI and cert name checks + + This reverts commit b0fd03f5b8d4520dd232a9d13567d16bd0ad8951, + 4b2fbe1e97891f, afecd1aa13b4f, 68cde058f66b3 + +- TODO-RELEASE: "TLS SNI use Host:" is done + + 262 - Manual setting of TLS Server Name Indication - use Host: + +- RELEASE-NOTES: synced with 7b823badbcab9d330 + +- curl.1: added a few missing exit codes + +- certcheck: use the custom Host: name for checks + + If you use a custom Host: name in a request to a SSL server, libcurl + will now use that given name when it verifies the server certificate to + be correct rather than using the host name used in the actual URL. + +- SNI: simplify the custom host name use + + The redirect check is already done at the position where the customhost + field is assigned so there's no point in doing that a second time. + +- host: get the custom Host: name more genericly + + When given a custom host name in a Host: header, we can use it for + several different purposes other than just cookies, so we rename it and + use it for SSL SNI etc. + +- [Hongli Lai (Phusion) brought this change] + + SNI: set name to custom Host header + + OpenSSL SNI host name should be set to the custom Host header, if the + user provided one. + +- fopen.c: re-indented, fixed previous mistake + + I've made the code intended using curl-style now to look more like other + examples. + + My previous "fix" was a bit too invasive but is now fixed again. + +- multi use: call multi_perform even on select() timeouts + +- example: add smtp-multi.c + + An example application source code sending SMTP mail with the multi + interface. It is based on the code Alona Rossen provided, which in turn + is based on existing example/test code, and I converted it even more + into a decent example with a fair multi API use, put the info required + to edit at the top and I added some comments. + +- CURLOPT_NOSIGNAL: add blurb about SIGPIPE + +Dan Fandrich (3 Nov 2010) +- Allow building test 580 out of tree + +Daniel Stenberg (3 Nov 2010) +- dist: add symbol-scan.pl to the tarball + +- test1119: verify symbols-in-versions + +- runtests: allow tests written as perl scripts + + If a command is set type="perl", it can now specify a perl program that will + be run instead of an ordinary curl or built tool. + + A perl test automatically disables memory and valgrind debugging. + +- symbol-scan: verifies symbols-in-versions + + This new script scans for all enums and #defines used by the curl/curl.h + and curl/multi.h headers. Then it reads all symbols mentioned in + symbols-in-vesions and make sure that there's no entries missing in + there. It then proceeds to verify that the entries that + symbols-in-vesions mentions but aren't found in the sources are truly + documented as removed. + + This script is used in the new test case 1119 + +- symbols-in-versions: added 119 missing symbols + + I've developed a script I call symbol-scan.pl that scans the curl.h and + multi.h header files and compare the symbols it finds in there with the + symbols symbols-in-versions documents and outputs a report on the + differences. Using this I've dug through the history to fill up + symbols-in-versions with all the symbols my script found mismatches for. + + I will commit symbol-scan.pl separatly and think of a way to put it to + use in the build/tests so that we from now on will get this in-sync + check automatically. + +Dan Fandrich (2 Nov 2010) +- Added mk580.pl to the tar ball + +Daniel Stenberg (2 Nov 2010) +- symbols-in-versions: added missing symbols + +- ignore: lib580.c is generated by mk580.pl + +- test: added test 580 - verifies symbols-in-versions + + The new perl script mk580.pl generates a C table in a fresh source file + named lib580.c and if that compiles fine we know that the file + docs/libcurl/symbols-in-versions at least doesn't include any symbols + that are misspelled. + + An additional feature would be to somehow scan curl/curl.h and compare + with symbols-in-versions to see if there are symbols missing. + +- spellfix: CURLOPT_TFTP_BLKSIZE it is + +Kamil Dudka (29 Oct 2010) +- ftp: prevent server from hanging on closed data connection + + Some FTP servers (e.g. Pure-ftpd) end up hanging if we close the data + connection before transferring all the requested data. If we send ABOR + in that case, it prevents the server from hanging. + + Bug: https://bugzilla.redhat.com/643656 + Reported by: Pasi Karkkainen, Patrick Monnerat + +Dan Fandrich (28 Oct 2010) +- Removed a leftover mention of FTP in an error message + +- Removed the native Makefile.riscos files + + These haven't worked in at least 8 years due to missing source + files, and most active RiscOS developers these days apparently + cross-compile anyway. + + Signed-off-by: James Bursa + +- Lightened the stack in wc_statemach to permit deeper recursion + + Also, added a few hints to help compilers to perform tail call + recursion optimization. + +Daniel Stenberg (20 Oct 2010) +- SSH: use libssh2_session_handshake() + + In libssh2 1.2.8, libssh2_session_handshake() replaces + libssh2_session_startup() to fix the previous portability problem with + the socket type that was too small for win64 and thus easily could cause + crashes and more. + +- SSH: avoid using the libssh2_ prefix + + It is a bad idea to use the public prefix used by another library and + now we realize that libssh2 introduces a symbol in the upcoming version + 1.2.8 that conflicts with our static function named libssh2_free. + +- formdata: provide error message + + When failing to build form post due to an error, the code now does a + proper failf(). Previously libcurl would report an error like "failed + creating formpost data" when a file wasn't possible to open which was + not easy for users to figure out. + + I also lower cased a function name to be named more curl-style and + removed some unnecessary code. + +- URL-parsing: consider ? a divider + + The URL parser got a little stricter as it now considers a ? to be a + host name divider so that the slightly sloppier URLs work too. The + problem that made me do this change was the reported problem with an URL + like: www.example.com?email=name@example.com This form of URL is not + really a legal URL (due to the missing slash after the host name) but is + widely accepted by all major browsers and libcurl also already accepted + it, it was just the '@' letter that triggered the problem now. + + The side-effect of this change is that now libcurl no longer accepts the + ? letter as part of user-name or password when given in the URL, which + it used to accept (and is tested in test 191). That letter is however + mentioned in RFC3986 to be required to be percent encoded since it is + used as a divider. + + Bug: http://curl.haxx.se/bug/view.cgi?id=3090268 + +- curl_easy_setopt.3: spellfix + +- curl_easy_setopt.3: CURLOPT_USE_SSL is not just for FTP + + It is for FTP, SMTP, POP3, IMAP at least. + +- krb4.h: removed unused prototypes + +- krb4: make a few functions static + +- TODO-RELEASE: cleanup for 7.21.3 works + + "SFTP resume with 4GB file does not work" is now removed as I'm sure + this is really a libssh2 bug and not a libcurl bug. + + 7.21.2 is released already + +- RELEASE-NOTES: sync with 09a2d93a0f17ca + +- http_chunks: remove debug output + + Accidentally left in there during my previous debugging of this + +- Curl_setopt: disallow CURLOPT_USE_SSL without SSL support + + In order to avoid for example the pingpong protocols to issue STARTTLS + (or equivalent) even though there's no SSL support built-in. + + Reported by: Sune Ahlgren + Bug: http://curl.haxx.se/mail/archive-2010-10/0045.html + +- options: check for features for some options + + Some options, such as the automatic decompression and some SSL related + ones now will bail out if the underlying libcurl doesn't have support + for the particular feature needed. + +Dan Fandrich (14 Oct 2010) +- Fixed the IPv6 host address in test1203 + + Reported by: Christian Weisgerber + Bug: http://curl.haxx.se/bug/view.cgi?id=3087479 + +Daniel Stenberg (14 Oct 2010) +- curl_easy_setopt.3: clarify CURLOPT_CRLF + + The option takes a parameter that should be 1 or 0 to enable or disable + the feature. + + URL: http://curl.haxx.se/bug/view.cgi?id=3086428 + +Guenter Knauf (14 Oct 2010) +- Some more small Watcom makefile fixes. + +- Added --noconfigure switch to testcurl.pl. + +- Modified Watcom makefiles to work on Linux too. + +- Added MingW32 rtmp target; changed Watcom targets. + + Modified Watcom targets to avoid backslashs so that they can + work on Linux too. + +Daniel Stenberg (13 Oct 2010) +- gitignore: ignore Makefile.vc10.dist made by maketgz + +- curlver.h: start over at 7.21.3 + +- RELEASE-NOTES: start over towards 7.21.3 + +- THANKS: added contributors from 7.21.2 + Version 7.21.2 (12 Oct 2010) Daniel Stenberg (12 Oct 2010) @@ -3986,497 +4711,3 @@ - Fix tftp and sftp supported protocols in servername_str() - Make sockfilter kill messages look alike server ones - -- Adjust vor VPATH builds - -Daniel Stenberg (11 Jan 2010) -- - Gil Weber reported a peculiar flaw with the multi interface when doing SFTP - transfers: curl_multi_fdset() would return -1 and not set and file - descriptors several times during a transfer of a single file. It turned out - to be due to two different flaws now fixed. Gil's excellent recipe helped me - nail this. - -- ssh_statemach_act() is now modified to loop over the switch() to perform as - much as possible in one go, as long as it doesn't block and hasn't reached the - end of the state machine. - This avoids spurious -1 returns from curl_multi_fdset() simply because - previously it would return from this function without anything in EWOUDLBLOCK - and thus basically it wasn't actually waiting for anything!! - -- After the TCP connect is confirmed in CURLM_STATE_WAITCONNECT and it changes - state, we return CURLM_CALL_MULTI_PERFORM unconditionally then so that we - can act faster like in the case the protocol-specific connect doesn't block - on anything and we can just persue on the next action immediately. It also - then avoids a case where curl_multi_fdset() would return -1. - -- progress callback called repeatedly during slow connects - -- - Made sure that the progress callback is repeatedly called at a regular - interval even during very slow connects. - -- - The tests/runtests.pl script now checks to see if the test case that runs is - present in the tests/data/Makefile.am and outputs a notice message on the - screen if not. Each test file has to be included in that Makefile.am to get - included in release archives and forgetting to add files there is a common - mistake. This is an attempt to make it harder to forget. - -Yang Tse (11 Jan 2010) -- secureserver.pl is now the test harness script used for SSL/TLS. - -- secureserver.pl is now the test harness script used for SSL/TLS. - - Start using the centralized pidfile and logfile name generation - subroutines for https and ftps test suite servers. - -- Update error message to include port number - -- Previous commit adjustments - -- Start using the centralized pidfile and logfile name generation - subroutines for ftp, pop3, imap and smtp test suite servers. - -Daniel Stenberg (9 Jan 2010) -- struct Curl_sh_entry's 'inuse' member was no longer used and is now removed - -- - Johan van Selst found and fixed a OpenSSL session ref count leak: - - ossl_connect_step3() increments an SSL session handle reference counter on - each call. When sessions are re-used this reference counter may be - incremented many times, but it will be decremented only once when done (by - Curl_ossl_session_free()); and the internal OpenSSL data will not be freed - if this reference count remains positive. When a session is re-used the - reference counter should be corrected by explicitly calling - SSL_SESSION_free() after each consecutive SSL_get1_session() to avoid - introducing a memory leak. - - (http://curl.haxx.se/bug/view.cgi?id=2926284) - -Yang Tse (8 Jan 2010) -- Start using the centralized pidfile and logfile name generation - subroutines for http and tftp test suite servers. - -- Remove extra line feed - -- Use '_stunnel.log' ending also for https test server log - -- sws and tftpd command line option naming adjustments - -Daniel Stenberg (7 Jan 2010) -- removed a parameter from the Curl_http_readwrite_headers() prototype to remove - the need for the struct forward declaration from http.h which caused problems - with gcc 2.96 and quite frankly the parameter wasn't necessary anyway - -Claes Jakobsson (7 Jan 2010) -- List fragment tests in Makefile.am and better provide better names - -Daniel Stenberg (7 Jan 2010) -- removed Curl_http_header_append() prototype as it isn't used anymore, the - function was moved to http.c and was made static and renamed - -- - Make sure the progress callback is called repeatedly even during very slow - name resolves when c-ares is used for resolving. - -Yang Tse (6 Jan 2010) -- Disable tests 802 and 803 - -- Prevent detection of stdint.h on IRIX systems, even when available. - - IRIX MIPSpro 7.4 C++ compiler does not tolerate inclusion of stdint.h - -Claes Jakobsson (6 Jan 2010) -- Julien Chaffraix fixed so that the fragment part in an URL is not sent to the server anymore - -Daniel Stenberg (4 Jan 2010) -- use the modern name for this option - -Kamil Dudka (3 Jan 2010) -- - Julien Chaffraix eliminated a duplicated initialization in singlesocket(). - -Daniel Stenberg (2 Jan 2010) -- - Make curl support --ssl and --ssl-reqd instead of the previous FTP-specific - versions --ftp-ssl and --ftp-ssl-reqd as these options are now used to - control SSL/TLS for IMAP, POP3 and SMTP as well in addition to FTP. The old - option names are still working but the new ones are the prefered ones - (listed and documented). - -- stop at once if the EOB marker shows up, even if something else might get - sent afterwards - -- update copyright year since we are in 2010 now - -- added CURLOPT_FTP_USE_PRET - -- - Ingmar Runge enhanced libcurl's FTP engine to support the PRET command. This - command is a special "hack" used by the drftpd server, but even though it is - a custom extension I've deemed it fine to add to libcurl since this server - seems to survive and people keep using it and want libcurl to support - it. The new libcurl option is named CURLOPT_FTP_USE_PRET, and it is also - usable from the curl tool with --ftp-pret. Using this option on a server - that doesn't support this command will make libcurl fail. - -- added descriptions for CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT - -- --mail-rcpt and --mail-from are starting to settle and work like this... - -- turned CURLOPT_MAIL_RCPT into a curl_slist list instead to support multiple - receivers, and made the command line tool thus support the option specified - many times - -Yang Tse (31 Dec 2009) -- Use '_stunnel.log' file name ending for stunneled server logs - -- VMS adjustments by Steven M. Schweda - -- Subs for refactoring purposes - -Daniel Stenberg (30 Dec 2009) -- CURLOPT_HEADERDATA was added in 7.10 - -- s/CURLOPT_WRITEHEADER/CURLOPT_HEADERDATA simply because it is a better name - -- modified to get the EHLO domain from the path part of the URL instead of the - user name - -- moved the SMTP payload escape function into Curl_smtp_escape_eob and put - it in smtp.c - -- (SMTP) support DATA better in the server and make sure to "escape" CRLF.CRLF - sequences in uploaded data. The test server doesn't "decode" escaped dot-lines - but instead test cases must be written to take them into account. Added test - case 803 to verify dot-escaping. - -Yang Tse (30 Dec 2009) -- Oops, should have removed 'not' in previous commit. - -- VMS build system enhancements by Steven M. Schweda and Craig A. Berry - -- VMS specific preprocessor symbol checking adjustments - -- VMS specific preprocessor symbol definition adjustments - -- Replaced stricmp() usage with our portable strequal() - -Daniel Stenberg (29 Dec 2009) -- move HTTP-specific functions to http.c where they belong - -- test 802 is the first SMTP test, although not strictly SMTP yet... - -Yang Tse (29 Dec 2009) -- Mention last changes - -- - Fix configure_socket() to use ares_socket_t instead of int data type. - -- - Where run-time error checks enabling compiler option /GZ was used it is now - replaced with equivalent /RTCsu for Visual Studio 2003 and newer versions. - - - Compiler option /GX is now replaced with equivalent /EHsc for all versions. - -- Leftover from previous commit - -- Initial refactoring step for server name strings centralized generation - -Daniel Stenberg (27 Dec 2009) -- Julien Chaffraix's clarifications - -Yang Tse (27 Dec 2009) -- Adjust FreeBSD version check to follow FreeBSD Porter's Handbook - - http://www.freebsd.org/doc/en/books/porters-handbook/porting-versions.html - -Daniel Stenberg (26 Dec 2009) -- symbols added in the CVS version meant for 7.20.0 - -Yang Tse (26 Dec 2009) -- global variables reordering/refactoring/commenting - -Daniel Stenberg (25 Dec 2009) -- add pointer to the bug report - -- - Renato Botelho and Peter Pentchev brought a patch that makes the libcurl - headers work correctly even on FreeBSD systems before v8. - -- first shot at actually doing the SMTP upload as well, not doing the proper - end-of-body treatment - -- When verifying the SMTP server I had to add some hackery since SMTP in itself - doesn't really return any body data to check so I made SMTP check "headers" - as well. - -- first basic SMTP support - -Yang Tse (24 Dec 2009) -- Adjust test number mismatch - -- Enable warnings - -- Fix warnings - -- Fix warnings - -- Back out some pingpong server stopping changes introduced last week in - order to re-use 'classic' stopping and allow taking test-suite run time - references from this state. - -- use Time::HiRes whenever available, independently of perl version - -- log a message when continuing once sleep time is over - -- - Ingmar Runge noticed that Windows config-win32.h configuration file - did not include a definition for HAVE_CLOSESOCKET which resulted in - function close() being inappropriately used to close sockets. - -- Make 'classic' output end of a test-suite run become again the end - of output, even when run time statistics are shown. - -- Move stopping of servers instructed by test definition, after the removal of - server logs advisor read lock and before test results verifications are done. - - When stopping a pingpong server, stop server before its slaves. - -Daniel Stenberg (21 Dec 2009) -- test 566 was missing - -Yang Tse (21 Dec 2009) -- dead_child_handler also takes care of reaping pingpong server dead child processes - -- Reap processes dead children ASAP without blocking - -- Reinstate hi resolution time logging since this is not what is - now adding 90 extra seconds to the total time some autobuilds - need to make a full test-run. - -Patrick Monnerat (21 Dec 2009) -- Take new SMTP definitions into account in OS400 wrapper and RPG binding - -Daniel Stenberg (21 Dec 2009) -- first small steps towards smtp - -Yang Tse (21 Dec 2009) -- Replaced tabs with spaces - -Daniel Stenberg (20 Dec 2009) -- remove some unused code - -Yang Tse (20 Dec 2009) -- Improve delay command interruptability - -Daniel Stenberg (20 Dec 2009) -- revert that, we already had a function named like that! - -- rename the verifyftp function to verifyserver since it is used to verify - a wide variety of protocol servers - -- free the allocated mailbox name at disconnect - -- introducing the first IMAP FETCH test - -Yang Tse (20 Dec 2009) -- - Attempt to fix script compilation failure on versions older than 5.007003, - corelist -a Time::HiRes lists this as the first version released with it. - - - Ensure ftp check delay timer is always an integral number. - -Daniel Stenberg (19 Dec 2009) -- support IMAP select and LOGOUT - -- fix the ftp check delay timer to never be set below 1 to work correctly - in cases like test 190 - -- fixed a precaution check in the cookie code, pointed out by Julien Chaffraix - -Yang Tse (19 Dec 2009) -- Slack time reduction - -- Added runtests.pl '-r' option for run time statistics - -- server start and verification time as well as test preparation time - data is required in order to closer match total test execution time. - -- Added test harness simple time execution stats - -- Comment out hi resolution time logging to verify if this is what might - be contributing 90 additional seconds to the total time some autobuilds - now need to make a full test-run. - -- Fix compilation failure - -- Test harness process control enhancements - -Daniel Stenberg (17 Dec 2009) -- uh, assign the bool it points to properly - -- Stop overloading the conn->protocol field with the PROT_MISSING bit. It - really didn't belong there and had no real point. - -- Remove pointless storing of the protocol as a string within the connectdata - struct, and instead use the already stored string in the handler struct. - -- - David Byron fixed Curl_ossl_cleanup to actually call ENGINE_cleanup when - available. - -Yang Tse (17 Dec 2009) -- gettimeofday() requires perl version newer than 5.6 - -Daniel Stenberg (16 Dec 2009) -- Follow-up fix for the proxy fix I did for Jon Nelson's bug. It turned out I - was a bit too quick and broke test case 1101 with that change. The order of - some of the setups is sensitive. I now changed it slightly again. - -Yang Tse (16 Dec 2009) -- Test harness process control enhancements - -- Test #1106 needs an ftp enabled client - -- Test harness process control enhancements - -Daniel Stenberg (14 Dec 2009) -- - Jon Nelson found a regression that turned out to be a flaw in how libcurl - detects and uses proxies based on the environment variables. If the proxy - was given as an explicit option it worked, but due to the setup order - mistake proxies would not be used fine for a few protocols when picked up - from '[protocol]_proxy'. Obviously this broke after 7.19.4. I now also added - test case 1106 that verifies this functionality. - - (http://curl.haxx.se/bug/view.cgi?id=2913886) - -Yang Tse (14 Dec 2009) -- Fix compiler warning - -- Prevent perl script dying messages in output, since tearing down the pinpong - server in this way, upon sysread failures, is part of the expected behavior. - -- Adjust uppercase protocol string usage - -- Fix compiler warnings - -- Fix compiler warnings - -- signal handling to cleanup on SIGINT and SIGTERM, followup - -- reapply diff between revisions 1.103 and 1.102 - -Daniel Stenberg (12 Dec 2009) -- updated with the new protocols - -- might as well output all supported protocols at the end of configure to - make it more obvious how the output will be - -- show POP3S, IMAPS and SMTPS as protocols if SSL is enabled - -- support disabling POP3, IMAP and SMTP and now they also appear in curl-config - --protocols output - -- split out more protocol-specific structs from urldata.h into their own - protocol-specific header files - -- IMAP, POP3 and SMTP support - -- introducing IMAP, POP3 and SMTP support (still lots of polish left to do) - -Yang Tse (11 Dec 2009) -- Prevent rewinding unless pipelining. - - See http://curl.haxx.se/mail/lib-2009-12/0107.html - -- Removed function prototype without implementation - -Daniel Stenberg (10 Dec 2009) -- - Siegfried Gyuricsko found out that the curl manual said --retry would retry - on FTP errors in the transient 5xx range. Transient FTP errors are in the - 4xx range. The code itself only tried on 5xx errors that occured _at login_. - Now the retry code retries on all FTP transfer failures that ended with a - 4xx response. - - (http://curl.haxx.se/bug/view.cgi?id=2911279) - -- argh, use the correct bug id - -- - Constantine Sapuntzakis figured out a case which would lead to libcurl - accessing alredy freed memory and thus crash when using HTTPS (with - OpenSSL), multi interface and the CURLOPT_DEBUGFUNCTION and a certain order - of cleaning things up. I fixed it. - - (http://curl.haxx.se/bug/view.cgi?id=2891591) - -- minor indent change - -Yang Tse (10 Dec 2009) -- - Fixed curl erroneously reporting output stream write failures with disabled buffering - -- signal handling to cleanup on SIGINT and SIGTERM, followup - -Daniel Stenberg (7 Dec 2009) -- - Martin Storsjo made libcurl use the Expect: 100-continue header for posts - with unknown size. Previously it was only used for posts with a known size - larger than 1024 bytes. - -- 74. The HTTP spec allows headers to be merged and become comma-separated - instead of being repeated several times. This also include Authenticate: and - Proxy-Authenticate: headers and while this hardly every happens in real life - it will confuse libcurl which does not properly support it for all headers - - like those Authenticate headers. - -Yang Tse (3 Dec 2009) -- Fix 'uploaded' file descriptor leak - -- signal handling to cleanup on SIGINT and SIGTERM - -Kamil Dudka (2 Dec 2009) -- lib/nss.c: avoid use of uninitialized value - -Yang Tse (2 Dec 2009) -- signal handling to cleanup on SIGINT and SIGTERM - -- Set socket option SO_REUSEADDR=true on stunnel accept'ing port - -Daniel Stenberg (1 Dec 2009) -- - If the Expect: 100-continue header has been set by the application through - curl_easy_setopt with CURLOPT_HTTPHEADER, the library should set - data->state.expect100header accordingly - the current code (in 7.19.7 at - least) doesn't handle this properly. Martin Storsjo provided the fix! - -- start working on 1.7.1 - -Yang Tse (30 Nov 2009) -- - In order to better reflect that the returned pid is extracted from the - given file, serverpid sub is renamed to pidfromfile. In addition it is - enhanced to make sure that it always returns zero unless a numerical - positive value is returned. - - - To better reflect that only process existance is actually checked, - checkserver sub is renamed to processexists. In addition it is enhanced - making it remove the given pid file when the extracted pid is no longer - alive. - -Daniel Stenberg (29 Nov 2009) -- #71 "TFTP block size / better integration in transfer" is now expected to - have been fixed! - -- a binding for Falcon - -Yang Tse (28 Nov 2009) -- - Added Diffie-Hellman parameters to several test harness certificate files in - PEM format. Required by several stunnel versions used by our test harness. - -- Use different log files for each protocol - -- s/socklen_t/curl_socklen_t/g - -- Fix compiler warning: unused variable `data' - -Daniel Stenberg (27 Nov 2009) -- 7.20.0 is the planned next version number - -- document --tftp-blksize - -- - Markus Koetter provided a polished and updated version of Chad Monroe's TFTP - rework patch that now integrates TFTP properly into libcurl so that it can - be used non-blocking with the multi interface and more. BLKSIZE also works. - - The --tftp-blksize option was added to allow setting the TFTP BLKSIZE from - the command line. - -Yang Tse (27 Nov 2009) -- Attempt to enhance stunnel 3.X logging - -- Prevent running stunnel unless its version can be determined. diff -Nru curl-7.21.2/configure curl-7.21.3/configure --- curl-7.21.2/configure 2010-10-01 22:49:17.000000000 +0200 +++ curl-7.21.3/configure 2010-12-15 15:01:16.000000000 +0100 @@ -18639,34 +18639,35 @@ { $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 "${curl_cv_writable_argv+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - 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; + argv[0][0] = ' '; + return (argv[0][0] == ' ')?0:1; } + _ACEOF if ac_fn_c_try_run "$LINENO"; then : + curl_cv_writable_argv=yes + else + curl_cv_writable_argv=no + fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi - -fi - case $curl_cv_writable_argv in yes) @@ -21093,8 +21094,8 @@ if test "$LIBSSH2_ENABLED" = "1"; then if test -n "$DIR_SSH2"; then - for ac_func in libssh2_version libssh2_init libssh2_exit \ - libssh2_scp_send64 + for ac_func in libssh2_version libssh2_init libssh2_exit \ + libssh2_scp_send64 libssh2_session_handshake do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -21256,6 +21257,8 @@ CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp` version=`$PKGCONFIG --modversion librtmp` DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'` + else + as_fn_error $? "--librtmp was specified but could not find librtmp pkgconfig file." "$LINENO" 5 fi ;; @@ -22468,16 +22471,30 @@ $as_echo_n "checking if numberLL works... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -long long val = 1000LL; + + + +int main (void) +{ + + long long val = 1000LL; + + ; + return 0; +} + _ACEOF if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + $as_echo "#define HAVE_LL 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi @@ -25801,6 +25818,240 @@ fi +curl_includes_sys_xattr="\ +/* includes start */ +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_XATTR_H +# include +#endif +/* includes end */" + for ac_header in sys/types.h sys/xattr.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$curl_includes_sys_xattr +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + # + tst_links_fsetxattr="unknown" + tst_proto_fsetxattr="unknown" + tst_compi_fsetxattr="unknown" + tst_allow_fsetxattr="unknown" + tst_nargs_fsetxattr="unknown" + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsetxattr can be linked" >&5 +$as_echo_n "checking if fsetxattr can be linked... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +#define fsetxattr innocuous_fsetxattr +#ifdef __STDC__ +# include +#else +# include +#endif +#undef fsetxattr +#ifdef __cplusplus +extern "C" +#endif +char fsetxattr (); +#if defined __stub_fsetxattr || defined __stub___fsetxattr +choke me +#endif + +int main (void) +{ +return fsetxattr (); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + tst_links_fsetxattr="yes" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + tst_links_fsetxattr="no" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + # + if test "$tst_links_fsetxattr" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsetxattr is prototyped" >&5 +$as_echo_n "checking if fsetxattr is prototyped... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + $curl_includes_sys_xattr + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "fsetxattr" >/dev/null 2>&1; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + tst_proto_fsetxattr="yes" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + tst_proto_fsetxattr="no" + +fi +rm -f conftest* + + fi + # + if test "$tst_proto_fsetxattr" = "yes"; then + if test "$tst_nargs_fsetxattr" = "unknown"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsetxattr takes 5 args." >&5 +$as_echo_n "checking if fsetxattr takes 5 args.... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + $curl_includes_sys_xattr + +int main (void) +{ + + if(0 != fsetxattr(0, 0, 0, 0, 0)) + return 1; + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + tst_compi_fsetxattr="yes" + tst_nargs_fsetxattr="5" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + tst_compi_fsetxattr="no" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test "$tst_nargs_fsetxattr" = "unknown"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsetxattr takes 6 args." >&5 +$as_echo_n "checking if fsetxattr takes 6 args.... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + $curl_includes_sys_xattr + +int main (void) +{ + + if(0 != fsetxattr(0, 0, 0, 0, 0, 0)) + return 1; + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + tst_compi_fsetxattr="yes" + tst_nargs_fsetxattr="6" + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + tst_compi_fsetxattr="no" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsetxattr is compilable" >&5 +$as_echo_n "checking if fsetxattr is compilable... " >&6; } + if test "$tst_compi_fsetxattr" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + # + if test "$tst_compi_fsetxattr" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsetxattr usage allowed" >&5 +$as_echo_n "checking if fsetxattr usage allowed... " >&6; } + if test "x$curl_disallow_fsetxattr" != "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + tst_allow_fsetxattr="yes" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + tst_allow_fsetxattr="no" + fi + fi + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsetxattr might be used" >&5 +$as_echo_n "checking if fsetxattr might be used... " >&6; } + if test "$tst_links_fsetxattr" = "yes" && + test "$tst_proto_fsetxattr" = "yes" && + test "$tst_compi_fsetxattr" = "yes" && + test "$tst_allow_fsetxattr" = "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +cat >>confdefs.h <<_ACEOF +#define HAVE_FSETXATTR 1 +_ACEOF + + # + if test "$tst_nargs_fsetxattr" -eq "5"; then + +$as_echo "#define HAVE_FSETXATTR_5 1" >>confdefs.h + + elif test "$tst_nargs_fsetxattr" -eq "6"; then + +$as_echo "#define HAVE_FSETXATTR_6 1" >>confdefs.h + + fi + # + ac_cv_func_fsetxattr="yes" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ac_cv_func_fsetxattr="no" + fi + + # tst_links_ftruncate="unknown" tst_proto_ftruncate="unknown" @@ -33444,7 +33695,6 @@ fi - case $host in *msdosdjgpp) ac_cv_func_pipe=no @@ -37275,6 +37525,38 @@ fi + + tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null` + if test -z "$tmp_cpp"; then + tmp_cpp='cpp' + fi + cat >./tests/configurehelp.pm <<_EOF +# This is a generated file. Do not edit. + +package configurehelp; + +use strict; +use warnings; +use Exporter; + +use vars qw( + @ISA + @EXPORT_OK + \$Cpreprocessor + ); + +@ISA = qw(Exporter); + +@EXPORT_OK = qw( + \$Cpreprocessor + ); + +\$Cpreprocessor = '$tmp_cpp'; + +1; +_EOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: Configured to build curl/libcurl: curl version: ${VERSION} diff -Nru curl-7.21.2/configure.ac curl-7.21.3/configure.ac --- curl-7.21.2/configure.ac 2010-10-01 22:48:39.000000000 +0200 +++ curl-7.21.3/configure.ac 2010-12-15 14:49:10.000000000 +0100 @@ -955,16 +955,19 @@ dnl ********************************************************************** AC_MSG_CHECKING([if argv can be written to]) -AC_CACHE_VAL(curl_cv_writable_argv, [ -AC_RUN_IFELSE([[ +AC_RUN_IFELSE([ + AC_LANG_SOURCE([[ int main(int argc, char ** argv) { - argv[0][0] = ' '; - return (argv[0][0] == ' ')?0:1; + argv[0][0] = ' '; + return (argv[0][0] == ' ')?0:1; } - ]], - curl_cv_writable_argv=yes, - curl_cv_writable_argv=no, - curl_cv_writable_argv=cross) + ]]) +],[ + curl_cv_writable_argv=yes +],[ + curl_cv_writable_argv=no +],[ + curl_cv_writable_argv=cross ]) case $curl_cv_writable_argv in yes) @@ -2019,8 +2022,9 @@ dnl libssh2_version is a post 1.0 addition dnl libssh2_init and libssh2_exit were added in 1.2.5 dnl libssh2_scp_send64 was added in 1.2.6 + dnl libssh2_session_handshake was added in 1.2.8 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \ - libssh2_scp_send64 ) + libssh2_scp_send64 libssh2_session_handshake) LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2" export LD_LIBRARY_PATH @@ -2062,6 +2066,10 @@ CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp` version=`$PKGCONFIG --modversion librtmp` DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'` + else + dnl To avoid link errors, we do not allow --librtmp without + dnl a pkgconfig file + AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.]) fi ;; @@ -2277,11 +2285,17 @@ if test "xyes" = "x$longlong"; then AC_MSG_CHECKING([if numberLL works]) - AC_COMPILE_IFELSE([long long val = 1000LL;], - [AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])] - AC_MSG_RESULT(yes), - AC_MSG_RESULT(no) - ) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + ]],[[ + long long val = 1000LL; + ]]) + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL]) + ],[ + AC_MSG_RESULT([no]) + ]) fi @@ -2328,6 +2342,7 @@ CURL_CHECK_FUNC_FDOPEN CURL_CHECK_FUNC_FREEADDRINFO CURL_CHECK_FUNC_FREEIFADDRS +CURL_CHECK_FUNC_FSETXATTR CURL_CHECK_FUNC_FTRUNCATE CURL_CHECK_FUNC_GETADDRINFO CURL_CHECK_FUNC_GETHOSTBYADDR @@ -2368,10 +2383,6 @@ CURL_CHECK_FUNC_STRTOLL CURL_CHECK_FUNC_WRITEV -dnl Checks for library functions. -dnl AC_PROG_GCC_TRADITIONAL - -dnl AC_FUNC_VPRINTF case $host in *msdosdjgpp) ac_cv_func_pipe=no @@ -2862,6 +2873,8 @@ ]) AC_OUTPUT +CURL_GENERATE_CONFIGUREHELP_PM + AC_MSG_NOTICE([Configured to build curl/libcurl: curl version: ${VERSION} diff -Nru curl-7.21.2/debian/changelog curl-7.21.3/debian/changelog --- curl-7.21.2/debian/changelog 2011-01-02 16:12:37.000000000 +0100 +++ curl-7.21.3/debian/changelog 2011-01-26 02:52:34.000000000 +0100 @@ -1,3 +1,23 @@ +curl (7.21.3-1ubuntu1) natty; urgency=low + + * Merge from debian unstable. Remaining changes: (LP: #707756) + - debian/control: + + Build-Depends: Replace libssh2-1-dev with openssh-server. + Drop stunnel since it's in universe, as well. + + Drop libssh2-1-dev from libcurl4-openssl-dev's Depends. + Above changes are necessary to be independent from the universe. + + -- Artur Rona Wed, 26 Jan 2011 02:50:18 +0100 + +curl (7.21.3-1) unstable; urgency=low + + * New upstream release. + * debian/*.manpages: adding all manpages for the curl library. + (closes: #605651) + * gnutls->handshake: improved timeout handling. See #594150 for details. + + -- Ramakrishnan Muthukrishnan Wed, 15 Dec 2010 23:39:26 +0530 + curl (7.21.2-4ubuntu1) natty; urgency=low * Merge from debian unstable. Remaining changes: (LP: #693635, #637416) diff -Nru curl-7.21.2/debian/libcurl4-gnutls-dev.manpages curl-7.21.3/debian/libcurl4-gnutls-dev.manpages --- curl-7.21.2/debian/libcurl4-gnutls-dev.manpages 2010-10-18 08:45:24.000000000 +0200 +++ curl-7.21.3/debian/libcurl4-gnutls-dev.manpages 2011-01-20 00:20:53.000000000 +0100 @@ -1,43 +1,2 @@ docs/curl-config.1 -docs/libcurl/curl_easy_cleanup.3 -docs/libcurl/curl_easy_duphandle.3 -docs/libcurl/curl_easy_getinfo.3 -docs/libcurl/curl_easy_init.3 -docs/libcurl/curl_easy_perform.3 -docs/libcurl/curl_easy_reset.3 -docs/libcurl/curl_easy_setopt.3 -docs/libcurl/curl_easy_strerror.3 -docs/libcurl/curl_escape.3 -docs/libcurl/curl_formadd.3 -docs/libcurl/curl_formfree.3 -docs/libcurl/curl_free.3 -docs/libcurl/curl_getdate.3 -docs/libcurl/curl_getenv.3 -docs/libcurl/curl_global_cleanup.3 -docs/libcurl/curl_global_init.3 -docs/libcurl/curl_global_init_mem.3 -docs/libcurl/curl_mprintf.3 -docs/libcurl/curl_multi_add_handle.3 -docs/libcurl/curl_multi_cleanup.3 -docs/libcurl/curl_multi_fdset.3 -docs/libcurl/curl_multi_info_read.3 -docs/libcurl/curl_multi_init.3 -docs/libcurl/curl_multi_perform.3 -docs/libcurl/curl_multi_remove_handle.3 -docs/libcurl/curl_multi_strerror.3 -docs/libcurl/curl_share_cleanup.3 -docs/libcurl/curl_share_init.3 -docs/libcurl/curl_share_setopt.3 -docs/libcurl/curl_share_strerror.3 -docs/libcurl/curl_slist_append.3 -docs/libcurl/curl_slist_free_all.3 -docs/libcurl/curl_strequal.3 -docs/libcurl/curl_unescape.3 -docs/libcurl/curl_version.3 -docs/libcurl/curl_version_info.3 -docs/libcurl/libcurl-easy.3 -docs/libcurl/libcurl-errors.3 -docs/libcurl/libcurl-multi.3 -docs/libcurl/libcurl-share.3 -docs/libcurl/libcurl-tutorial.3 -docs/libcurl/libcurl.3 +docs/libcurl/*.3 diff -Nru curl-7.21.2/debian/libcurl4-nss-dev.manpages curl-7.21.3/debian/libcurl4-nss-dev.manpages --- curl-7.21.2/debian/libcurl4-nss-dev.manpages 2011-01-02 16:12:37.000000000 +0100 +++ curl-7.21.3/debian/libcurl4-nss-dev.manpages 2011-01-20 00:20:53.000000000 +0100 @@ -1,43 +1,2 @@ docs/curl-config.1 -docs/libcurl/curl_easy_cleanup.3 -docs/libcurl/curl_easy_duphandle.3 -docs/libcurl/curl_easy_getinfo.3 -docs/libcurl/curl_easy_init.3 -docs/libcurl/curl_easy_perform.3 -docs/libcurl/curl_easy_reset.3 -docs/libcurl/curl_easy_setopt.3 -docs/libcurl/curl_easy_strerror.3 -docs/libcurl/curl_escape.3 -docs/libcurl/curl_formadd.3 -docs/libcurl/curl_formfree.3 -docs/libcurl/curl_free.3 -docs/libcurl/curl_getdate.3 -docs/libcurl/curl_getenv.3 -docs/libcurl/curl_global_cleanup.3 -docs/libcurl/curl_global_init.3 -docs/libcurl/curl_global_init_mem.3 -docs/libcurl/curl_mprintf.3 -docs/libcurl/curl_multi_add_handle.3 -docs/libcurl/curl_multi_cleanup.3 -docs/libcurl/curl_multi_fdset.3 -docs/libcurl/curl_multi_info_read.3 -docs/libcurl/curl_multi_init.3 -docs/libcurl/curl_multi_perform.3 -docs/libcurl/curl_multi_remove_handle.3 -docs/libcurl/curl_multi_strerror.3 -docs/libcurl/curl_share_cleanup.3 -docs/libcurl/curl_share_init.3 -docs/libcurl/curl_share_setopt.3 -docs/libcurl/curl_share_strerror.3 -docs/libcurl/curl_slist_append.3 -docs/libcurl/curl_slist_free_all.3 -docs/libcurl/curl_strequal.3 -docs/libcurl/curl_unescape.3 -docs/libcurl/curl_version.3 -docs/libcurl/curl_version_info.3 -docs/libcurl/libcurl-easy.3 -docs/libcurl/libcurl-errors.3 -docs/libcurl/libcurl-multi.3 -docs/libcurl/libcurl-share.3 -docs/libcurl/libcurl-tutorial.3 -docs/libcurl/libcurl.3 +docs/libcurl/*.3 diff -Nru curl-7.21.2/debian/libcurl4-openssl-dev.manpages curl-7.21.3/debian/libcurl4-openssl-dev.manpages --- curl-7.21.2/debian/libcurl4-openssl-dev.manpages 2010-10-18 08:45:24.000000000 +0200 +++ curl-7.21.3/debian/libcurl4-openssl-dev.manpages 2011-01-20 00:20:53.000000000 +0100 @@ -1,43 +1,2 @@ docs/curl-config.1 -docs/libcurl/curl_easy_cleanup.3 -docs/libcurl/curl_easy_duphandle.3 -docs/libcurl/curl_easy_getinfo.3 -docs/libcurl/curl_easy_init.3 -docs/libcurl/curl_easy_perform.3 -docs/libcurl/curl_easy_reset.3 -docs/libcurl/curl_easy_setopt.3 -docs/libcurl/curl_easy_strerror.3 -docs/libcurl/curl_escape.3 -docs/libcurl/curl_formadd.3 -docs/libcurl/curl_formfree.3 -docs/libcurl/curl_free.3 -docs/libcurl/curl_getdate.3 -docs/libcurl/curl_getenv.3 -docs/libcurl/curl_global_cleanup.3 -docs/libcurl/curl_global_init.3 -docs/libcurl/curl_global_init_mem.3 -docs/libcurl/curl_mprintf.3 -docs/libcurl/curl_multi_add_handle.3 -docs/libcurl/curl_multi_cleanup.3 -docs/libcurl/curl_multi_fdset.3 -docs/libcurl/curl_multi_info_read.3 -docs/libcurl/curl_multi_init.3 -docs/libcurl/curl_multi_perform.3 -docs/libcurl/curl_multi_remove_handle.3 -docs/libcurl/curl_multi_strerror.3 -docs/libcurl/curl_share_cleanup.3 -docs/libcurl/curl_share_init.3 -docs/libcurl/curl_share_setopt.3 -docs/libcurl/curl_share_strerror.3 -docs/libcurl/curl_slist_append.3 -docs/libcurl/curl_slist_free_all.3 -docs/libcurl/curl_strequal.3 -docs/libcurl/curl_unescape.3 -docs/libcurl/curl_version.3 -docs/libcurl/curl_version_info.3 -docs/libcurl/libcurl-easy.3 -docs/libcurl/libcurl-errors.3 -docs/libcurl/libcurl-multi.3 -docs/libcurl/libcurl-share.3 -docs/libcurl/libcurl-tutorial.3 -docs/libcurl/libcurl.3 +docs/libcurl/*.3 diff -Nru curl-7.21.2/docs/curl.1 curl-7.21.3/docs/curl.1 --- curl-7.21.2/docs/curl.1 2010-09-18 23:00:20.000000000 +0200 +++ curl-7.21.3/docs/curl.1 2010-11-12 23:55:18.000000000 +0100 @@ -526,8 +526,8 @@ \fBcurl\fP -F "name=daniel;type=text/foo" url.com -You can also explicitly change the name field of an file upload part by -setting filename=, like this: +You can also explicitly change the name field of a file upload part by setting +filename=, like this: \fBcurl\fP -F "file=@localfile;filename=nameinpost" url.com @@ -1142,6 +1142,18 @@ When used, this will make libcurl attempt to figure out the timestamp of the remote file, and if that is available make the local file get that same timestamp. +.IP "--resolve " +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 +/etc/hosts alternative provided on the command line. The port number should be +the number used for the specific protocol the host will be used for. It means +you need several entries if you want to provide address for the same host but +different ports. + +This option can be used many times to add many host names to resolve. + +(Added in 7.21.3) .IP "--retry " If a transient error is returned when curl tries to perform a transfer, it will retry this number of times before giving up. Setting the number to 0 @@ -1751,6 +1763,16 @@ Could not load CRL file, missing or wrong format (added in 7.19.0). .IP 83 Issuer check failed (added in 7.19.0). +.IP 84 +The FTP PRET command failed +.IP 85 +RTSP: mismatch of CSeq numbers +.IP 86 +RTSP: mismatch of Session Identifiers +.IP 87 +unable to parse FTP file list +.IP 88 +FTP chunk callback reported error .IP XX More error codes will appear here in future releases. The existing ones are meant to never change. Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/curl-config.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/curl-config.pdf się różnią diff -Nru curl-7.21.2/docs/curl.html curl-7.21.3/docs/curl.html --- curl-7.21.2/docs/curl.html 2010-10-13 00:04:07.000000000 +0200 +++ curl-7.21.3/docs/curl.html 2010-12-15 15:07:42.000000000 +0100 @@ -226,7 +226,7 @@

curl -F "web=@index.html;type=text/html" url.com

or

curl -F "name=daniel;type=text/foo" url.com -

You can also explicitly change the name field of an file upload part by setting filename=, like this: +

You can also explicitly change the name field of a file upload part by setting filename=, like this:

curl -F "file=@localfile;filename=nameinpost" url.com

See further examples and details in the MANUAL.

This option can be used multiple times. @@ -486,6 +486,10 @@

When used, it disables all internal HTTP decoding of content or transfer encodings and instead makes them passed on unaltered, raw. (Added in 7.16.2)

-R/--remote-time

When used, this will make libcurl attempt to figure out the timestamp of the remote file, and if that is available make the local file get that same timestamp. +

--resolve <host:port: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 /etc/hosts alternative provided on the command line. The port number should be the number used for the specific protocol the host will be used for. It means you need several entries if you want to provide address for the same host but different ports. +

This option can be used many times to add many host names to resolve. +

(Added in 7.21.3)

--retry <num>

If a transient error is returned when curl tries to perform a transfer, it will retry this number of times before giving up. Setting the number to 0 makes curl do no retries (which is the default). Transient error means either: a timeout, an FTP 4xx response code or an HTTP 5xx response code.

When curl is about to retry a transfer, it will first wait one second and then for all forthcoming retries it will double the waiting time until it reaches 10 minutes which then will be the delay between the rest of the retries. By using --retry-delay you disable this exponential backoff algorithm. See also --retry-max-time to limit the total time allowed for retries. (Added in 7.12.3) @@ -823,6 +827,16 @@

Could not load CRL file, missing or wrong format (added in 7.19.0).

83

Issuer check failed (added in 7.19.0). +

84 +

The FTP PRET command failed +

85 +

RTSP: mismatch of CSeq numbers +

86 +

RTSP: mismatch of Session Identifiers +

87 +

unable to parse FTP file list +

88 +

FTP chunk callback reported error

XX

More error codes will appear here in future releases. The existing ones are meant to never change.

AUTHORS / CONTRIBUTORS

Daniel Stenberg is the main author, but the whole list of contributors is found in the separate THANKS file.

WWW

Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/curl.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/curl.pdf się różnią diff -Nru curl-7.21.2/docs/examples/chkspeed.c curl-7.21.3/docs/examples/chkspeed.c --- curl-7.21.2/docs/examples/chkspeed.c 2010-09-18 23:00:20.000000000 +0200 +++ curl-7.21.3/docs/examples/chkspeed.c 2010-12-01 19:45:49.000000000 +0100 @@ -71,7 +71,7 @@ } else if (strncasecmp(*argv, "-T", 2) == 0) { prttime = 1; } else if (strncasecmp(*argv, "-M=", 3) == 0) { - int m = atoi(*argv + 3); + long m = strtol(argv+3, NULL, 10); switch(m) { case 1: url = URL_1M; break; diff -Nru curl-7.21.2/docs/examples/fopen.c curl-7.21.3/docs/examples/fopen.c --- curl-7.21.2/docs/examples/fopen.c 2010-10-01 22:48:39.000000000 +0200 +++ curl-7.21.3/docs/examples/fopen.c 2010-11-04 11:41:27.000000000 +0100 @@ -53,20 +53,24 @@ #include -enum fcurl_type_e { CFTYPE_NONE=0, CFTYPE_FILE=1, CFTYPE_CURL=2 }; +enum fcurl_type_e { + CFTYPE_NONE=0, + CFTYPE_FILE=1, + CFTYPE_CURL=2 +}; struct fcurl_data { - enum fcurl_type_e type; /* type of handle */ - union { - CURL *curl; - FILE *file; - } handle; /* handle */ - - char *buffer; /* buffer to store cached data*/ - int buffer_len; /* currently allocated buffers length */ - int buffer_pos; /* end of data in buffer*/ - int still_running; /* Is background url fetch still in progress */ + enum fcurl_type_e type; /* type of handle */ + union { + CURL *curl; + FILE *file; + } handle; /* handle */ + + char *buffer; /* buffer to store cached data*/ + int buffer_len; /* currently allocated buffers length */ + int buffer_pos; /* end of data in buffer*/ + int still_running; /* Is background url fetch still in progress */ }; typedef struct fcurl_data URL_FILE; @@ -83,491 +87,441 @@ CURLM *multi_handle; /* curl calls this routine to get more data */ -static size_t -write_callback(char *buffer, - size_t size, - size_t nitems, - void *userp) -{ - char *newbuff; - int rembuff; - - URL_FILE *url = (URL_FILE *)userp; - size *= nitems; - - rembuff=url->buffer_len - url->buffer_pos; /* remaining space in buffer */ - - if(size > rembuff) - { - /* not enough space in buffer */ - newbuff=realloc(url->buffer,url->buffer_len + (size - rembuff)); - if(newbuff==NULL) - { - fprintf(stderr,"callback buffer grow failed\n"); - size=rembuff; - } - else - { - /* realloc suceeded increase buffer size*/ - url->buffer_len+=size - rembuff; - url->buffer=newbuff; +static size_t write_callback(char *buffer, + size_t size, + size_t nitems, + void *userp) +{ + char *newbuff; + int rembuff; - /*printf("Callback buffer grown to %d bytes\n",url->buffer_len);*/ - } - } + URL_FILE *url = (URL_FILE *)userp; + size *= nitems; - memcpy(&url->buffer[url->buffer_pos], buffer, size); - url->buffer_pos += size; + rembuff=url->buffer_len - url->buffer_pos; /* remaining space in buffer */ - /*fprintf(stderr, "callback %d size bytes\n", size);*/ + if(size > rembuff) { + /* not enough space in buffer */ + newbuff=realloc(url->buffer,url->buffer_len + (size - rembuff)); + if(newbuff==NULL) { + fprintf(stderr,"callback buffer grow failed\n"); + size=rembuff; + } + else { + /* realloc suceeded increase buffer size*/ + url->buffer_len+=size - rembuff; + url->buffer=newbuff; + } + } - return size; + memcpy(&url->buffer[url->buffer_pos], buffer, size); + url->buffer_pos += size; + + return size; } /* use to attempt to fill the read buffer up to requested number of bytes */ -static int -fill_buffer(URL_FILE *file,int want,int waittime) +static int fill_buffer(URL_FILE *file,int want,int waittime) { - fd_set fdread; - fd_set fdwrite; - fd_set fdexcep; - struct timeval timeout; - int rc; - - /* only attempt to fill buffer if transactions still running and buffer - * doesnt exceed required size already - */ - if((!file->still_running) || (file->buffer_pos > want)) - return 0; - - /* attempt to fill buffer */ - do - { - int maxfd = -1; - long curl_timeo = -1; - - FD_ZERO(&fdread); - FD_ZERO(&fdwrite); - FD_ZERO(&fdexcep); - - /* set a suitable timeout to fail on */ - timeout.tv_sec = 60; /* 1 minute */ - timeout.tv_usec = 0; - - curl_multi_timeout(multi_handle, &curl_timeo); - if(curl_timeo >= 0) { - timeout.tv_sec = curl_timeo / 1000; - if(timeout.tv_sec > 1) - timeout.tv_sec = 1; - else - timeout.tv_usec = (curl_timeo % 1000) * 1000; - } - - /* get file descriptors from the transfers */ - curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); - - /* In a real-world program you OF COURSE check the return code of the - function calls. On success, the value of maxfd is guaranteed to be - greater or equal than -1. We call select(maxfd + 1, ...), specially - in case of (maxfd == -1), we call select(0, ...), which is basically - equal to sleep. */ - - rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); - - switch(rc) { - case -1: - /* select error */ - break; - - case 0: - break; - - default: - /* timeout or readable/writable sockets */ - curl_multi_perform(multi_handle, &file->still_running); - break; - } - } while(file->still_running && (file->buffer_pos < want)); - return 1; + fd_set fdread; + fd_set fdwrite; + fd_set fdexcep; + struct timeval timeout; + int rc; + + /* only attempt to fill buffer if transactions still running and buffer + * doesnt exceed required size already + */ + if((!file->still_running) || (file->buffer_pos > want)) + return 0; + + /* attempt to fill buffer */ + do { + int maxfd = -1; + long curl_timeo = -1; + + FD_ZERO(&fdread); + FD_ZERO(&fdwrite); + FD_ZERO(&fdexcep); + + /* set a suitable timeout to fail on */ + timeout.tv_sec = 60; /* 1 minute */ + timeout.tv_usec = 0; + + curl_multi_timeout(multi_handle, &curl_timeo); + if(curl_timeo >= 0) { + timeout.tv_sec = curl_timeo / 1000; + if(timeout.tv_sec > 1) + timeout.tv_sec = 1; + else + timeout.tv_usec = (curl_timeo % 1000) * 1000; + } + + /* get file descriptors from the transfers */ + curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); + + /* In a real-world program you OF COURSE check the return code of the + function calls. On success, the value of maxfd is guaranteed to be + greater or equal than -1. We call select(maxfd + 1, ...), specially + in case of (maxfd == -1), we call select(0, ...), which is basically + equal to sleep. */ + + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + + switch(rc) { + case -1: + /* select error */ + break; + + case 0: + default: + /* timeout or readable/writable sockets */ + curl_multi_perform(multi_handle, &file->still_running); + break; + } + } while(file->still_running && (file->buffer_pos < want)); + return 1; } /* use to remove want bytes from the front of a files buffer */ -static int -use_buffer(URL_FILE *file,int want) +static int use_buffer(URL_FILE *file,int want) { - /* sort out buffer */ - if((file->buffer_pos - want) <=0) - { - /* ditch buffer - write will recreate */ - if(file->buffer) - free(file->buffer); - - file->buffer=NULL; - file->buffer_pos=0; - file->buffer_len=0; - } - else - { - /* move rest down make it available for later */ - memmove(file->buffer, - &file->buffer[want], - (file->buffer_pos - want)); + /* sort out buffer */ + if((file->buffer_pos - want) <=0) { + /* ditch buffer - write will recreate */ + if(file->buffer) + free(file->buffer); - file->buffer_pos -= want; - } - return 0; + file->buffer=NULL; + file->buffer_pos=0; + file->buffer_len=0; + } + else { + /* move rest down make it available for later */ + memmove(file->buffer, + &file->buffer[want], + (file->buffer_pos - want)); + + file->buffer_pos -= want; + } + return 0; } - - -URL_FILE * -url_fopen(const char *url,const char *operation) +URL_FILE *url_fopen(const char *url,const char *operation) { - /* this code could check for URLs or types in the 'url' and - basicly use the real fopen() for standard files */ + /* this code could check for URLs or types in the 'url' and + basicly use the real fopen() for standard files */ - URL_FILE *file; - (void)operation; + URL_FILE *file; + (void)operation; - file = malloc(sizeof(URL_FILE)); - if(!file) - return NULL; + file = malloc(sizeof(URL_FILE)); + if(!file) + return NULL; - memset(file, 0, sizeof(URL_FILE)); + memset(file, 0, sizeof(URL_FILE)); - if((file->handle.file=fopen(url,operation))) - { - file->type = CFTYPE_FILE; /* marked as URL */ - } - else - { - file->type = CFTYPE_CURL; /* marked as URL */ - file->handle.curl = curl_easy_init(); + if((file->handle.file=fopen(url,operation))) + file->type = CFTYPE_FILE; /* marked as URL */ - curl_easy_setopt(file->handle.curl, CURLOPT_URL, url); - curl_easy_setopt(file->handle.curl, CURLOPT_WRITEDATA, file); - curl_easy_setopt(file->handle.curl, CURLOPT_VERBOSE, 0L); - curl_easy_setopt(file->handle.curl, CURLOPT_WRITEFUNCTION, write_callback); + else { + file->type = CFTYPE_CURL; /* marked as URL */ + file->handle.curl = curl_easy_init(); - if(!multi_handle) - multi_handle = curl_multi_init(); + curl_easy_setopt(file->handle.curl, CURLOPT_URL, url); + curl_easy_setopt(file->handle.curl, CURLOPT_WRITEDATA, file); + curl_easy_setopt(file->handle.curl, CURLOPT_VERBOSE, 0L); + curl_easy_setopt(file->handle.curl, CURLOPT_WRITEFUNCTION, write_callback); - curl_multi_add_handle(multi_handle, file->handle.curl); + if(!multi_handle) + multi_handle = curl_multi_init(); - /* lets start the fetch */ - curl_multi_perform(multi_handle, &file->still_running); + curl_multi_add_handle(multi_handle, file->handle.curl); - if((file->buffer_pos == 0) && (!file->still_running)) - { - /* if still_running is 0 now, we should return NULL */ + /* lets start the fetch */ + curl_multi_perform(multi_handle, &file->still_running); - /* make sure the easy handle is not in the multi handle anymore */ - curl_multi_remove_handle(multi_handle, file->handle.curl); + if((file->buffer_pos == 0) && (!file->still_running)) { + /* if still_running is 0 now, we should return NULL */ - /* cleanup */ - curl_easy_cleanup(file->handle.curl); + /* make sure the easy handle is not in the multi handle anymore */ + curl_multi_remove_handle(multi_handle, file->handle.curl); - free(file); + /* cleanup */ + curl_easy_cleanup(file->handle.curl); - file = NULL; - } + free(file); + + file = NULL; } - return file; + } + return file; } -int -url_fclose(URL_FILE *file) +int url_fclose(URL_FILE *file) { - int ret=0;/* default is good return */ + int ret=0;/* default is good return */ - switch(file->type) - { - case CFTYPE_FILE: - ret=fclose(file->handle.file); /* passthrough */ - break; + switch(file->type) { + case CFTYPE_FILE: + ret=fclose(file->handle.file); /* passthrough */ + break; - case CFTYPE_CURL: - /* make sure the easy handle is not in the multi handle anymore */ - curl_multi_remove_handle(multi_handle, file->handle.curl); + case CFTYPE_CURL: + /* make sure the easy handle is not in the multi handle anymore */ + curl_multi_remove_handle(multi_handle, file->handle.curl); - /* cleanup */ - curl_easy_cleanup(file->handle.curl); - break; + /* cleanup */ + curl_easy_cleanup(file->handle.curl); + break; - default: /* unknown or supported type - oh dear */ - ret=EOF; - errno=EBADF; - break; + default: /* unknown or supported type - oh dear */ + ret=EOF; + errno=EBADF; + break; + } - } + if(file->buffer) + free(file->buffer);/* free any allocated buffer space */ - if(file->buffer) - free(file->buffer);/* free any allocated buffer space */ - - free(file); + free(file); - return ret; + return ret; } -int -url_feof(URL_FILE *file) +int url_feof(URL_FILE *file) { - int ret=0; - - switch(file->type) - { - case CFTYPE_FILE: - ret=feof(file->handle.file); - break; + int ret=0; - case CFTYPE_CURL: - if((file->buffer_pos == 0) && (!file->still_running)) - ret = 1; - break; - default: /* unknown or supported type - oh dear */ - ret=-1; - errno=EBADF; - break; - } - return ret; + switch(file->type) { + case CFTYPE_FILE: + ret=feof(file->handle.file); + break; + + case CFTYPE_CURL: + if((file->buffer_pos == 0) && (!file->still_running)) + ret = 1; + break; + + default: /* unknown or supported type - oh dear */ + ret=-1; + errno=EBADF; + break; + } + return ret; } -size_t -url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file) +size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file) { - size_t want; - - switch(file->type) - { - case CFTYPE_FILE: - want=fread(ptr,size,nmemb,file->handle.file); - break; + size_t want; - case CFTYPE_CURL: - want = nmemb * size; + switch(file->type) { + case CFTYPE_FILE: + want=fread(ptr,size,nmemb,file->handle.file); + break; - fill_buffer(file,want,1); + case CFTYPE_CURL: + want = nmemb * size; - /* check if theres data in the buffer - if not fill_buffer() - * either errored or EOF */ - if(!file->buffer_pos) - return 0; + fill_buffer(file,want,1); - /* ensure only available data is considered */ - if(file->buffer_pos < want) - want = file->buffer_pos; + /* check if theres data in the buffer - if not fill_buffer() + * either errored or EOF */ + if(!file->buffer_pos) + return 0; - /* xfer data to caller */ - memcpy(ptr, file->buffer, want); + /* ensure only available data is considered */ + if(file->buffer_pos < want) + want = file->buffer_pos; - use_buffer(file,want); + /* xfer data to caller */ + memcpy(ptr, file->buffer, want); - want = want / size; /* number of items - nb correct op - checked - * with glibc code*/ + use_buffer(file,want); - /*printf("(fread) return %d bytes %d left\n", want,file->buffer_pos);*/ - break; + want = want / size; /* number of items */ + break; - default: /* unknown or supported type - oh dear */ - want=0; - errno=EBADF; - break; + default: /* unknown or supported type - oh dear */ + want=0; + errno=EBADF; + break; - } - return want; + } + return want; } -char * -url_fgets(char *ptr, int size, URL_FILE *file) +char *url_fgets(char *ptr, int size, URL_FILE *file) { - int want = size - 1;/* always need to leave room for zero termination */ - int loop; + int want = size - 1;/* always need to leave room for zero termination */ + int loop; - switch(file->type) - { - case CFTYPE_FILE: - ptr = fgets(ptr,size,file->handle.file); - break; - - case CFTYPE_CURL: - fill_buffer(file,want,1); + switch(file->type) { + case CFTYPE_FILE: + ptr = fgets(ptr,size,file->handle.file); + break; - /* check if theres data in the buffer - if not fill either errored or - * EOF */ - if(!file->buffer_pos) - return NULL; - - /* ensure only available data is considered */ - if(file->buffer_pos < want) - want = file->buffer_pos; - - /*buffer contains data */ - /* look for newline or eof */ - for(loop=0;loop < want;loop++) - { - if(file->buffer[loop] == '\n') - { - want=loop+1;/* include newline */ - break; - } - } - - /* xfer data to caller */ - memcpy(ptr, file->buffer, want); - ptr[want]=0;/* allways null terminate */ + case CFTYPE_CURL: + fill_buffer(file,want,1); - use_buffer(file,want); + /* check if theres data in the buffer - if not fill either errored or + * EOF */ + if(!file->buffer_pos) + return NULL; - /*printf("(fgets) return %d bytes %d left\n", want,file->buffer_pos);*/ - break; + /* ensure only available data is considered */ + if(file->buffer_pos < want) + want = file->buffer_pos; - default: /* unknown or supported type - oh dear */ - ptr=NULL; - errno=EBADF; + /*buffer contains data */ + /* look for newline or eof */ + for(loop=0;loop < want;loop++) { + if(file->buffer[loop] == '\n') { + want=loop+1;/* include newline */ break; + } } - return ptr;/*success */ + /* xfer data to caller */ + memcpy(ptr, file->buffer, want); + ptr[want]=0;/* allways null terminate */ + + use_buffer(file,want); + + break; + + default: /* unknown or supported type - oh dear */ + ptr=NULL; + errno=EBADF; + break; + } + + return ptr;/*success */ } -void -url_rewind(URL_FILE *file) +void url_rewind(URL_FILE *file) { - switch(file->type) - { - case CFTYPE_FILE: - rewind(file->handle.file); /* passthrough */ - break; + switch(file->type) { + case CFTYPE_FILE: + rewind(file->handle.file); /* passthrough */ + break; - case CFTYPE_CURL: - /* halt transaction */ - curl_multi_remove_handle(multi_handle, file->handle.curl); - - /* restart */ - curl_multi_add_handle(multi_handle, file->handle.curl); - - /* ditch buffer - write will recreate - resets stream pos*/ - if(file->buffer) - free(file->buffer); - - file->buffer=NULL; - file->buffer_pos=0; - file->buffer_len=0; + case CFTYPE_CURL: + /* halt transaction */ + curl_multi_remove_handle(multi_handle, file->handle.curl); - break; + /* restart */ + curl_multi_add_handle(multi_handle, file->handle.curl); - default: /* unknown or supported type - oh dear */ - break; + /* ditch buffer - write will recreate - resets stream pos*/ + if(file->buffer) + free(file->buffer); - } + file->buffer=NULL; + file->buffer_pos=0; + file->buffer_len=0; -} + break; + default: /* unknown or supported type - oh dear */ + break; + } +} /* Small main program to retrive from a url using fgets and fread saving the * output to two test files (note the fgets method will corrupt binary files if * they contain 0 chars */ -int -main(int argc, char *argv[]) +int main(int argc, char *argv[]) { - URL_FILE *handle; - FILE *outf; - - int nread; - char buffer[256]; - const char *url; - - if(argc < 2) - { - url="http://192.168.7.3/testfile";/* default to testurl */ - } - else - { - url=argv[1];/* use passed url */ - } + URL_FILE *handle; + FILE *outf; - /* copy from url line by line with fgets */ - outf=fopen("fgets.test","w+"); - if(!outf) - { - perror("couldn't open fgets output file\n"); - return 1; - } + int nread; + char buffer[256]; + const char *url; + + if(argc < 2) + url="http://192.168.7.3/testfile";/* default to testurl */ + else + url=argv[1];/* use passed url */ + + /* copy from url line by line with fgets */ + outf=fopen("fgets.test","w+"); + if(!outf) { + perror("couldn't open fgets output file\n"); + return 1; + } - handle = url_fopen(url, "r"); - if(!handle) - { - printf("couldn't url_fopen() %s\n", url); - fclose(outf); - return 2; - } + handle = url_fopen(url, "r"); + if(!handle) { + printf("couldn't url_fopen() %s\n", url); + fclose(outf); + return 2; + } - while(!url_feof(handle)) - { - url_fgets(buffer,sizeof(buffer),handle); - fwrite(buffer,1,strlen(buffer),outf); - } + while(!url_feof(handle)) { + url_fgets(buffer,sizeof(buffer),handle); + fwrite(buffer,1,strlen(buffer),outf); + } - url_fclose(handle); + url_fclose(handle); - fclose(outf); + fclose(outf); - /* Copy from url with fread */ - outf=fopen("fread.test","w+"); - if(!outf) - { - perror("couldn't open fread output file\n"); - return 1; - } + /* Copy from url with fread */ + outf=fopen("fread.test","w+"); + if(!outf) { + perror("couldn't open fread output file\n"); + return 1; + } - handle = url_fopen("testfile", "r"); - if(!handle) { - printf("couldn't url_fopen() testfile\n"); - fclose(outf); - return 2; - } + handle = url_fopen("testfile", "r"); + if(!handle) { + printf("couldn't url_fopen() testfile\n"); + fclose(outf); + return 2; + } - do { - nread = url_fread(buffer, 1,sizeof(buffer), handle); - fwrite(buffer,1,nread,outf); - } while(nread); + do { + nread = url_fread(buffer, 1,sizeof(buffer), handle); + fwrite(buffer,1,nread,outf); + } while(nread); - url_fclose(handle); + url_fclose(handle); - fclose(outf); + fclose(outf); - /* Test rewind */ - outf=fopen("rewind.test","w+"); - if(!outf) - { - perror("couldn't open fread output file\n"); - return 1; - } + /* Test rewind */ + outf=fopen("rewind.test","w+"); + if(!outf) { + perror("couldn't open fread output file\n"); + return 1; + } - handle = url_fopen("testfile", "r"); - if(!handle) { - printf("couldn't url_fopen() testfile\n"); - fclose(outf); - return 2; - } + handle = url_fopen("testfile", "r"); + if(!handle) { + printf("couldn't url_fopen() testfile\n"); + fclose(outf); + return 2; + } - nread = url_fread(buffer, 1,sizeof(buffer), handle); - fwrite(buffer,1,nread,outf); - url_rewind(handle); + nread = url_fread(buffer, 1,sizeof(buffer), handle); + fwrite(buffer,1,nread,outf); + url_rewind(handle); - buffer[0]='\n'; - fwrite(buffer,1,1,outf); + buffer[0]='\n'; + fwrite(buffer,1,1,outf); - nread = url_fread(buffer, 1,sizeof(buffer), handle); - fwrite(buffer,1,nread,outf); + nread = url_fread(buffer, 1,sizeof(buffer), handle); + fwrite(buffer,1,nread,outf); - url_fclose(handle); + url_fclose(handle); - fclose(outf); + fclose(outf); - return 0;/* all done */ + return 0;/* all done */ } diff -Nru curl-7.21.2/docs/examples/Makefile.in curl-7.21.3/docs/examples/Makefile.in --- curl-7.21.2/docs/examples/Makefile.in 2010-10-01 22:49:18.000000000 +0200 +++ curl-7.21.3/docs/examples/Makefile.in 2010-12-15 15:01:16.000000000 +0100 @@ -51,7 +51,8 @@ post-callback$(EXEEXT) postit2$(EXEEXT) sepheaders$(EXEEXT) \ simple$(EXEEXT) simplepost$(EXEEXT) simplessl$(EXEEXT) \ sendrecv$(EXEEXT) httpcustomheader$(EXEEXT) certinfo$(EXEEXT) \ - chkspeed$(EXEEXT) ftpgetinfo$(EXEEXT) ftp-wildcard$(EXEEXT) + chkspeed$(EXEEXT) ftpgetinfo$(EXEEXT) ftp-wildcard$(EXEEXT) \ + smtp-multi$(EXEEXT) subdir = docs/examples ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \ @@ -198,6 +199,10 @@ simplessl_OBJECTS = simplessl.$(OBJEXT) simplessl_LDADD = $(LDADD) simplessl_DEPENDENCIES = $(LIBDIR)/libcurl.la +smtp_multi_SOURCES = smtp-multi.c +smtp_multi_OBJECTS = smtp-multi.$(OBJEXT) +smtp_multi_LDADD = $(LDADD) +smtp_multi_DEPENDENCIES = $(LIBDIR)/libcurl.la DEFAULT_INCLUDES = depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -215,14 +220,16 @@ getinmemory.c http-post.c httpcustomheader.c httpput.c https.c \ multi-app.c multi-debugcallback.c multi-double.c multi-post.c \ multi-single.c persistant.c post-callback.c postit2.c \ - sendrecv.c sepheaders.c simple.c simplepost.c simplessl.c + sendrecv.c sepheaders.c simple.c simplepost.c simplessl.c \ + smtp-multi.c DIST_SOURCES = 10-at-a-time.c anyauthput.c certinfo.c chkspeed.c \ cookie_interface.c debug.c fileupload.c fopen.c ftp-wildcard.c \ ftpget.c ftpgetinfo.c ftpgetresp.c ftpupload.c getinfo.c \ getinmemory.c http-post.c httpcustomheader.c httpput.c https.c \ multi-app.c multi-debugcallback.c multi-double.c multi-post.c \ multi-single.c persistant.c post-callback.c postit2.c \ - sendrecv.c sepheaders.c simple.c simplepost.c simplessl.c + sendrecv.c sepheaders.c simple.c simplepost.c simplessl.c \ + smtp-multi.c ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -437,7 +444,8 @@ # available on POSIX systems, so don't bother attempting to compile them here. COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cc cacertinmem.c \ ftpuploadresume.c ghiper.c hiperfifo.c htmltidy.c multithread.c \ - opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c + opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \ + smooth-gtk-thread.c version-check.pl all: all-am @@ -575,6 +583,9 @@ simplessl$(EXEEXT): $(simplessl_OBJECTS) $(simplessl_DEPENDENCIES) @rm -f simplessl$(EXEEXT) $(LINK) $(simplessl_LDFLAGS) $(simplessl_OBJECTS) $(simplessl_LDADD) $(LIBS) +smtp-multi$(EXEEXT): $(smtp_multi_OBJECTS) $(smtp_multi_DEPENDENCIES) + @rm -f smtp-multi$(EXEEXT) + $(LINK) $(smtp_multi_LDFLAGS) $(smtp_multi_OBJECTS) $(smtp_multi_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -614,6 +625,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplepost.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplessl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smtp-multi.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ diff -Nru curl-7.21.2/docs/examples/Makefile.inc curl-7.21.3/docs/examples/Makefile.inc --- curl-7.21.2/docs/examples/Makefile.inc 2010-09-18 23:00:20.000000000 +0200 +++ curl-7.21.3/docs/examples/Makefile.inc 2010-12-01 19:45:49.000000000 +0100 @@ -3,10 +3,12 @@ fopen ftpget ftpgetresp ftpupload getinfo getinmemory http-post httpput \ https multi-app multi-debugcallback multi-double multi-post multi-single \ persistant post-callback postit2 sepheaders simple simplepost simplessl \ - sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard + sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard \ + smtp-multi # These examples require external dependencies that may not be commonly # available on POSIX systems, so don't bother attempting to compile them here. COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cc cacertinmem.c \ ftpuploadresume.c ghiper.c hiperfifo.c htmltidy.c multithread.c \ - opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c + opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \ + smooth-gtk-thread.c version-check.pl diff -Nru curl-7.21.2/docs/examples/multi-app.c curl-7.21.3/docs/examples/multi-app.c --- curl-7.21.2/docs/examples/multi-app.c 2010-10-10 23:22:27.000000000 +0200 +++ curl-7.21.3/docs/examples/multi-app.c 2010-11-04 11:35:37.000000000 +0100 @@ -101,12 +101,8 @@ case -1: /* select error */ break; - case 0: - /* timeout, do something else */ - break; - default: - /* one or more of curl's file descriptors say there's data to read - or write */ + case 0: /* timeout */ + default: /* action */ curl_multi_perform(multi_handle, &still_running); break; } diff -Nru curl-7.21.2/docs/examples/multi-post.c curl-7.21.3/docs/examples/multi-post.c --- curl-7.21.2/docs/examples/multi-post.c 2010-10-10 23:22:27.000000000 +0200 +++ curl-7.21.3/docs/examples/multi-post.c 2010-11-04 11:36:18.000000000 +0100 @@ -112,7 +112,6 @@ /* select error */ break; case 0: - printf("timeout!\n"); default: /* timeout or readable/writable sockets */ printf("perform!\n"); diff -Nru curl-7.21.2/docs/examples/smooth-gtk-thread.c curl-7.21.3/docs/examples/smooth-gtk-thread.c --- curl-7.21.2/docs/examples/smooth-gtk-thread.c 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/docs/examples/smooth-gtk-thread.c 2010-09-18 23:00:20.000000000 +0200 @@ -0,0 +1,217 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * + * This is a multi threaded application that uses a progress bar to show + * status. It uses Gtk+ to make a smooth pulse. + * + * Written by Jud Bishop after studying the other examples provided with + * libcurl. + * + * To compile (on a single line): + * gcc -ggdb `pkg-config --cflags --libs gtk+-2.0` -lcurl -lssl -lcrypto + * -lgthread-2.0 -dl smooth-gtk-thread.c -o smooth-gtk-thread + */ + +#include +#include +#include +#include +#include + +#include +#include /* new for v7 */ +#include /* new for v7 */ + +#define NUMT 4 + +pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; +int j = 0; +gint num_urls = 9; /* Just make sure this is less than urls[]*/ +const char * const urls[]= { + "90022", + "90023", + "90024", + "90025", + "90026", + "90027", + "90028", + "90029", + "90030" +}; + +size_t write_file(void *ptr, size_t size, size_t nmemb, FILE *stream) +{ + /* printf("write_file\n"); */ + return fwrite(ptr, size, nmemb, stream); +} + +/* http://xoap.weather.com/weather/local/46214?cc=*&dayf=5&unit=i */ +void *pull_one_url(void *NaN) +{ + CURL *curl; + CURLcode res; + gchar *http; + FILE *outfile; + + /* Stop threads from entering unless j is incremented */ + pthread_mutex_lock(&lock); + while ( j < num_urls ) + { + printf("j = %d\n", j); + + http = + g_strdup_printf("xoap.weather.com/weather/local/%s?cc=*&dayf=5&unit=i\n", + urls[j]); + + printf( "http %s", http ); + + curl = curl_easy_init(); + if(curl) + { + + outfile = fopen(urls[j], "w"); + /* printf("fopen\n"); */ + + /* Set the URL and transfer type */ + curl_easy_setopt(curl, CURLOPT_URL, http); + + /* Write to the file */ + curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_file); + + j++; /* critical line */ + pthread_mutex_unlock(&lock); + + res = curl_easy_perform(curl); + + fclose(outfile); + printf("fclose\n"); + + curl_easy_cleanup(curl); + } + g_free (http); + + /* Adds more latency, testing the mutex.*/ + sleep(1); + + } /* end while */ + return NULL; +} + + +gboolean pulse_bar(gpointer data) +{ + gdk_threads_enter(); + gtk_progress_bar_pulse (GTK_PROGRESS_BAR (data)); + gdk_threads_leave(); + + /* Return true so the function will be called again; + * returning false removes this timeout function. + */ + return TRUE; +} + +void *create_thread(void *progress_bar) +{ + pthread_t tid[NUMT]; + int i; + int error; + + /* Make sure I don't create more threads than urls. */ + for(i=0; i < NUMT && i < num_urls ; i++) { + error = pthread_create(&tid[i], + NULL, /* default attributes please */ + pull_one_url, + NULL); + if(0 != error) + fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, error); + else + fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]); + } + + /* Wait for all threads to terminate. */ + for(i=0; i < NUMT && i < num_urls; i++) { + error = pthread_join(tid[i], NULL); + fprintf(stderr, "Thread %d terminated\n", i); + } + + /* This stops the pulsing if you have it turned on in the progress bar + section */ + g_source_remove(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(progress_bar), + "pulse_id"))); + + /* This destroys the progress bar */ + gtk_widget_destroy(progress_bar); + + /* [Un]Comment this out to kill the program rather than pushing close. */ + /* gtk_main_quit(); */ + + + return NULL; + +} + +static gboolean cb_delete(GtkWidget *window, gpointer data) +{ + gtk_main_quit(); + return FALSE; +} + +int main(int argc, char **argv) +{ + GtkWidget *top_window, *outside_frame, *inside_frame, *progress_bar; + + /* Must initialize libcurl before any threads are started */ + curl_global_init(CURL_GLOBAL_ALL); + + /* Init thread */ + g_thread_init(NULL); + gdk_threads_init (); + gdk_threads_enter (); + + gtk_init(&argc, &argv); + + /* Base window */ + top_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + + /* Frame */ + outside_frame = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(outside_frame), GTK_SHADOW_OUT); + gtk_container_add(GTK_CONTAINER(top_window), outside_frame); + + /* Frame */ + inside_frame = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(inside_frame), GTK_SHADOW_IN); + gtk_container_set_border_width(GTK_CONTAINER(inside_frame), 5); + gtk_container_add(GTK_CONTAINER(outside_frame), inside_frame); + + /* Progress bar */ + progress_bar = gtk_progress_bar_new(); + gtk_progress_bar_pulse (GTK_PROGRESS_BAR (progress_bar)); + /* Make uniform pulsing */ + gint pulse_ref = g_timeout_add (300, pulse_bar, progress_bar); + g_object_set_data(G_OBJECT(progress_bar), "pulse_id", + GINT_TO_POINTER(pulse_ref)); + gtk_container_add(GTK_CONTAINER(inside_frame), progress_bar); + + gtk_widget_show_all(top_window); + printf("gtk_widget_show_all\n"); + + g_signal_connect(G_OBJECT (top_window), "delete-event", + G_CALLBACK(cb_delete), NULL); + + if (!g_thread_create(&create_thread, progress_bar, FALSE, NULL) != 0) + g_warning("can't create the thread"); + + gtk_main(); + gdk_threads_leave(); + printf("gdk_threads_leave\n"); + + return 0; +} + diff -Nru curl-7.21.2/docs/examples/smtp-multi.c curl-7.21.3/docs/examples/smtp-multi.c --- curl-7.21.2/docs/examples/smtp-multi.c 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/docs/examples/smtp-multi.c 2010-11-04 11:35:45.000000000 +0100 @@ -0,0 +1,192 @@ +/***************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * + * This is an example application source code sending SMTP mail using the + * multi interface. + */ + +#include +#include + +/* + * This is the list of basic details you need to tweak to get things right. + */ +#define USERNAME "user@example.com" +#define PASSWORD "123qwerty" +#define SMTPSERVER "smtp.example.com" +#define SMTPPORT ":587" /* it is a colon+port string, but you can set it + to "" to use the default port */ +#define RECEPIENT "receipient@example.com" +#define MAILFROM "" + +#define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000 + +/* Note that you should include the actual meta data headers here as well if + you want the mail to have a Subject, another From:, show a To: or whatever + you think your mail should feature! */ +static const char *text[]={ + "one\n", + "two\n", + "three\n", + " Hello, this is CURL email SMTP\n", + NULL +}; + +struct WriteThis { + int counter; +}; + +static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp) +{ + struct WriteThis *pooh = (struct WriteThis *)userp; + const char *data; + + if(size*nmemb < 1) + return 0; + + data = text[pooh->counter]; + + if(data) { + size_t len = strlen(data); + memcpy(ptr, data, len); + pooh->counter++; /* advance pointer */ + return len; + } + return 0; /* no more data left to deliver */ +} + +static struct timeval tvnow(void) +{ + /* + ** time() returns the value of time in seconds since the Epoch. + */ + struct timeval now; + now.tv_sec = (long)time(NULL); + now.tv_usec = 0; + return now; +} + +static long tvdiff(struct timeval newer, struct timeval older) +{ + return (newer.tv_sec-older.tv_sec)*1000+ + (newer.tv_usec-older.tv_usec)/1000; +} + +int main(void) +{ + CURL *curl; + CURLM *mcurl; + int still_running = 1; + struct timeval mp_start; + char mp_timedout = 0; + struct WriteThis pooh; + struct curl_slist* rcpt_list = NULL; + + pooh.counter = 0; + + curl_global_init(CURL_GLOBAL_DEFAULT); + + curl = curl_easy_init(); + if(!curl) + return 1; + + mcurl = curl_multi_init(); + if(!mcurl) + return 2; + + rcpt_list = curl_slist_append(rcpt_list, RECEPIENT); + /* more addresses can be added here + rcpt_list = curl_slist_append(rcpt_list, "others@example.com"); + */ + + curl_easy_setopt(curl, CURLOPT_URL, "smtp://" SMTPSERVER SMTPPORT); + curl_easy_setopt(curl, CURLOPT_USERNAME, USERNAME); + curl_easy_setopt(curl, CURLOPT_PASSWORD, PASSWORD); + curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); + curl_easy_setopt(curl, CURLOPT_MAIL_FROM, MAILFROM); + curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, rcpt_list); + curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER,0); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0); + curl_easy_setopt(curl, CURLOPT_READDATA, &pooh); + curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); + curl_easy_setopt(curl, CURLOPT_SSLVERSION, 0); + curl_easy_setopt(curl, CURLOPT_SSL_SESSIONID_CACHE, 0); + curl_multi_add_handle(mcurl, curl); + + mp_timedout = 0; + mp_start = tvnow(); + + /* we start some action by calling perform right away */ + curl_multi_perform(mcurl, &still_running); + + while(still_running) { + struct timeval timeout; + int rc; /* select() return code */ + + fd_set fdread; + fd_set fdwrite; + fd_set fdexcep; + int maxfd = -1; + + long curl_timeo = -1; + + FD_ZERO(&fdread); + FD_ZERO(&fdwrite); + FD_ZERO(&fdexcep); + + /* set a suitable timeout to play around with */ + timeout.tv_sec = 1; + timeout.tv_usec = 0; + + curl_multi_timeout(mcurl, &curl_timeo); + if(curl_timeo >= 0) { + timeout.tv_sec = curl_timeo / 1000; + if(timeout.tv_sec > 1) + timeout.tv_sec = 1; + else + timeout.tv_usec = (curl_timeo % 1000) * 1000; + } + + /* get file descriptors from the transfers */ + curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd); + + /* In a real-world program you OF COURSE check the return code of the + function calls. On success, the value of maxfd is guaranteed to be + greater or equal than -1. We call select(maxfd + 1, ...), specially in + case of (maxfd == -1), we call select(0, ...), which is basically equal + to sleep. */ + + rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); + + if (tvdiff(tvnow(), mp_start) > MULTI_PERFORM_HANG_TIMEOUT) { + fprintf(stderr, "ABORTING TEST, since it seems " + "that it would have run forever.\n"); + break; + } + + switch(rc) { + case -1: + /* select error */ + break; + case 0: /* timeout */ + default: /* action */ + curl_multi_perform(mcurl, &still_running); + break; + } + } + + curl_slist_free_all(rcpt_list); + curl_multi_remove_handle(mcurl, curl); + curl_multi_cleanup(mcurl); + curl_easy_cleanup(curl); + curl_global_cleanup(); + return 0; +} + + diff -Nru curl-7.21.2/docs/examples/version-check.pl curl-7.21.3/docs/examples/version-check.pl --- curl-7.21.2/docs/examples/version-check.pl 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/docs/examples/version-check.pl 2010-12-03 14:09:44.000000000 +0100 @@ -0,0 +1,105 @@ +#!/usr/bin/env perl +#*************************************************************************** +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2010, Daniel Stenberg, , 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 http://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. +# +########################################################################### + +# This script accepts a source file as input on the command line. +# +# It first loads the 'symbols-in-versions' document and stores a lookup +# table for all known symbols for which version they were introduced. +# +# It then scans the given source file to dig up all symbols starting with CURL. +# Finally, it sorts the internal list of found symbols (using the version +# number as sort key) and then it outputs the most recent version number and +# the symbols from that version that are used. +# +# Usage: +# +# version-check.pl [source file] +# + +open(S, "<../libcurl/symbols-in-versions") || die; + +my %doc; +my %rem; +while() { + if(/(^CURL[^ \n]*) *(.*)/) { + my ($sym, $rest)=($1, $2); + my @a=split(/ +/, $rest); + + $doc{$sym}=$a[0]; # when it was introduced + + if($a[2]) { + # this symbol is documented to have been present the last time + # in this release + $rem{$sym}=$a[2]; + } + } + +} + +close(S); + +sub age { + my ($ver)=@_; + + my @s=split(/\./, $ver); + return $s[0]*10000+$s[1]*100+$s[2]; +} + +my %used; +open(C, "<$ARGV[0]") || die; + +while() { + if(/\W(CURL[_A-Z0-9v]+)\W/) { + #print "$1\n"; + $used{$1}++; + } +} + +close(C); + +sub sortversions { + my $r = age($doc{$a}) <=> age($doc{$b}); + if(!$r) { + $r = $a cmp $b; + } + return $r; +} + +my @recent = reverse sort sortversions keys %used; + +# the most recent symbol +my $newsym = $recent[0]; +# the most recent version +my $newver = $doc{$newsym}; + +print "The scanned source uses these symbols introduced in $newver:\n"; + +for my $w (@recent) { + if($doc{$w} eq $newver) { + printf " $w\n"; + next; + } + last; +} + + diff -Nru curl-7.21.2/docs/FAQ curl-7.21.3/docs/FAQ --- curl-7.21.2/docs/FAQ 2010-10-10 23:22:26.000000000 +0200 +++ curl-7.21.3/docs/FAQ 2010-12-08 19:21:00.000000000 +0100 @@ -1284,7 +1284,10 @@ this section was much enhanced by Bjorn Reese.) We are not lawyers and this is not legal advice. You should probably consult - one if you want true and accurate legal insights without our prejudice. + one if you want true and accurate legal insights without our prejudice. Note + especially that this section concerns the libcurl license only; compiling in + features of libcurl that depend on other libraries (e.g. OpenSSL) may affect + the licensing obligations of your application. 6.1 I have a GPL program, can I use the libcurl library? Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_cleanup.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_cleanup.pdf się różnią Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_duphandle.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_duphandle.pdf się różnią Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_escape.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_escape.pdf się różnią Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_getinfo.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_getinfo.pdf się różnią Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_init.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_init.pdf się różnią Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_pause.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_pause.pdf się różnią Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_perform.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_perform.pdf się różnią Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_recv.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_recv.pdf się różnią Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_reset.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_reset.pdf się różnią Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_send.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_send.pdf się różnią diff -Nru curl-7.21.2/docs/libcurl/curl_easy_setopt.3 curl-7.21.3/docs/libcurl/curl_easy_setopt.3 --- curl-7.21.2/docs/libcurl/curl_easy_setopt.3 2010-10-01 22:48:39.000000000 +0200 +++ curl-7.21.3/docs/libcurl/curl_easy_setopt.3 2010-11-11 16:41:36.000000000 +0100 @@ -84,6 +84,13 @@ resolver, timeouts will not occur while the name resolve takes place. Consider building libcurl with c-ares support to enable asynchronous DNS lookups, which enables nice timeouts for name resolves without signals. + +Setting \fICURLOPT_NOSIGNAL\fP to 1 makes libcurl NOT ask the system to ignore +SIGPIPE signals, which otherwise are sent by the system when trying to send +data to a socket which is closed in the other end. libcurl makes an effort to +never cause such SIGPIPEs to trigger, but some operating systems have no way +to avoid them and even on those that have there are some corner cases when +they may still happen, contrary to our desire. .IP CURLOPT_WILDCARDMATCH Set this option to 1 if you want to transfer multiple files according to a file name pattern. The pattern can be specified as part of the @@ -858,6 +865,10 @@ This is a convenience macro that sets all bits except Basic and thus makes libcurl pick any it finds suitable. libcurl will automatically select the one it finds most secure. +.IP CURLAUTH_ONLY +This is a meta symbol. Or this value together with a single specific auth +value to force libcurl to probe for un-restricted auth and if not, only that +single auth algorithm is acceptable. (Added in 7.21.3) .RE .IP CURLOPT_PROXYAUTH Pass a long as parameter, which is set to a bitmask, to tell libcurl which @@ -1337,22 +1348,6 @@ from the 227-response. (Added in 7.14.2) This option has no effect if PORT, EPRT or EPSV is used instead of PASV. -.IP CURLOPT_USE_SSL -Pass a long using one of the values from below, to make libcurl use your -desired level of SSL for the FTP transfer. (Added in 7.11.0) - -(This option was known as CURLOPT_FTP_SSL up to 7.16.4, and the constants -were known as CURLFTPSSL_*) -.RS -.IP CURLUSESSL_NONE -Don't attempt to use SSL. -.IP CURLUSESSL_TRY -Try using SSL, proceed as normal otherwise. -.IP CURLUSESSL_CONTROL -Require SSL for the control connection or fail with \fICURLE_USE_SSL_FAILED\fP. -.IP CURLUSESSL_ALL -Require SSL for all communication or fail with \fICURLE_USE_SSL_FAILED\fP. -.RE .IP CURLOPT_FTPSSLAUTH Pass a long using one of the values from below, to alter how libcurl issues \&"AUTH TLS" or "AUTH SSL" when FTP over SSL is activated (see @@ -1524,7 +1519,9 @@ FTP via a proxy. Beware that not all proxies support this feature. (Added in 7.18.0) .IP CURLOPT_CRLF -Convert Unix newlines to CRLF newlines on transfers. +Pass a long. If the value is set to 1 (one), libcurl converts Unix newlines to +CRLF newlines on transfers. Disable this option again by setting the value to +0 (zero). .IP CURLOPT_RANGE Pass a char * as parameter, which should contain the specified range you want. It should be in the format "X-Y", where X or Y may be left out. HTTP @@ -1763,6 +1760,47 @@ \fIcurl_easy_getinfo(3)\fP. The library can set up the connection and then the application can obtain the most recently used socket for special data transfers. (Added in 7.15.2) +.IP CURLOPT_USE_SSL +Pass a long using one of the values from below, to make libcurl use your +desired level of SSL for the transfer. (Added in 7.11.0) + +This is for enabling SSL/TLS when you use FTP, SMTP, POP3, IMAP etc. + +(This option was known as CURLOPT_FTP_SSL up to 7.16.4, and the constants +were known as CURLFTPSSL_*) +.RS +.IP CURLUSESSL_NONE +Don't attempt to use SSL. +.IP CURLUSESSL_TRY +Try using SSL, proceed as normal otherwise. +.IP CURLUSESSL_CONTROL +Require SSL for the control connection or fail with \fICURLE_USE_SSL_FAILED\fP. +.IP CURLUSESSL_ALL +Require SSL for all communication or fail with \fICURLE_USE_SSL_FAILED\fP. +.RE +.IP CURLOPT_RESOLVE +Pass a pointer to a linked list of strings with host name resolve information +to use for requests with this handle. The linked list should be a fully valid +list of \fBstruct curl_slist\fP structs properly filled in. Use +\fIcurl_slist_append(3)\fP to create the list and \fIcurl_slist_free_all(3)\fP +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. + +This option effectively pre-populates the DNS cache with entries for the +host+port pair so redirects and everything that operations against the +HOST+PORT will instead use your provided ADDRESS. + +You can remove names from the DNS cache again, to stop providing these fake +resolves, by including a string in the linked list that uses the format +\&"-HOST:PORT". The host name must be prefixed with a dash, and the host name +and port number must exactly match what was already added previously. + +(Added in 7.12.3) .SH SSL and SECURITY OPTIONS .IP CURLOPT_SSLCERT Pass a pointer to a zero terminated string as parameter. The string should be diff -Nru curl-7.21.2/docs/libcurl/curl_easy_setopt.html curl-7.21.3/docs/libcurl/curl_easy_setopt.html --- curl-7.21.2/docs/libcurl/curl_easy_setopt.html 2010-10-13 00:04:07.000000000 +0200 +++ curl-7.21.3/docs/libcurl/curl_easy_setopt.html 2010-12-15 15:07:42.000000000 +0100 @@ -64,6 +64,7 @@

CURLOPT_NOSIGNAL

Pass a long. If it is 1, libcurl will not use any functions that install signal handlers or any functions that cause signals to be sent to the process. This option is mainly here to allow multi-threaded unix applications to still set/use all timeout options etc, without risking getting signals. (Added in 7.10)

If this option is set and libcurl has been built with the standard name resolver, timeouts will not occur while the name resolve takes place. Consider building libcurl with c-ares support to enable asynchronous DNS lookups, which enables nice timeouts for name resolves without signals. +

Setting CURLOPT_NOSIGNAL to 1 makes libcurl NOT ask the system to ignore SIGPIPE signals, which otherwise are sent by the system when trying to send data to a socket which is closed in the other end. libcurl makes an effort to never cause such SIGPIPEs to trigger, but some operating systems have no way to avoid them and even on those that have there are some corner cases when they may still happen, contrary to our desire.

CURLOPT_WILDCARDMATCH

Set this option to 1 if you want to transfer multiple files according to a file name pattern. The pattern can be specified as part of the CURLOPT_URL option, using an fnmatch-like pattern (Shell Pattern Matching) in the last part of URL (file name).

By default, libcurl uses its internal wildcard matching implementation. You can provide your own matching function by the CURLOPT_FNMATCH_FUNCTION option. @@ -332,6 +333,8 @@

This is a convenience macro that sets all bits and thus makes libcurl pick any it finds suitable. libcurl will automatically select the one it finds most secure.

CURLAUTH_ANYSAFE

This is a convenience macro that sets all bits except Basic and thus makes libcurl pick any it finds suitable. libcurl will automatically select the one it finds most secure. +

CURLAUTH_ONLY +

This is a meta symbol. Or this value together with a single specific auth value to force libcurl to probe for un-restricted auth and if not, only that single auth algorithm is acceptable. (Added in 7.21.3)

CURLOPT_PROXYAUTH

Pass a long as parameter, which is set to a bitmask, to tell libcurl which authentication method(s) you want it to use for your proxy authentication. If more than one bit is set, libcurl will first query the site to see what authentication methods it supports and then pick the best one you allow it to use. For some methods, this will induce an extra network round-trip. Set the actual name and password with the CURLOPT_PROXYUSERPWD option. The bitmask can be constructed by or'ing together the bits listed above for the CURLOPT_HTTPAUTH option. As of this writing, only Basic, Digest and NTLM work. (Added in 7.10.7)

HTTP OPTIONS

@@ -490,19 +493,6 @@

CURLOPT_FTP_SKIP_PASV_IP

Pass a long. If set to 1, it instructs libcurl to not use the IP address the server suggests in its 227-response to libcurl's PASV command when libcurl connects the data connection. Instead libcurl will re-use the same IP address it already uses for the control connection. But it will use the port number from the 227-response. (Added in 7.14.2)

This option has no effect if PORT, EPRT or EPSV is used instead of PASV. -

CURLOPT_USE_SSL -

Pass a long using one of the values from below, to make libcurl use your desired level of SSL for the FTP transfer. (Added in 7.11.0) -

(This option was known as CURLOPT_FTP_SSL up to 7.16.4, and the constants were known as CURLFTPSSL_*) -

-

CURLUSESSL_NONE -

Don't attempt to use SSL. -

CURLUSESSL_TRY -

Try using SSL, proceed as normal otherwise. -

CURLUSESSL_CONTROL -

Require SSL for the control connection or fail with CURLE_USE_SSL_FAILED. -

CURLUSESSL_ALL -

Require SSL for all communication or fail with CURLE_USE_SSL_FAILED. -

CURLOPT_FTPSSLAUTH

Pass a long using one of the values from below, to alter how libcurl issues "AUTH TLS" or "AUTH SSL" when FTP over SSL is activated (see CURLOPT_USE_SSL). (Added in 7.12.2)

@@ -581,7 +571,7 @@

CURLOPT_PROXY_TRANSFER_MODE

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 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), CURLOPT_TRANSFERTEXT has no effect when doing FTP via a proxy. Beware that not all proxies support this feature. (Added in 7.18.0)

CURLOPT_CRLF -

Convert Unix newlines to CRLF newlines on transfers. +

Pass a long. If the value is set to 1 (one), libcurl converts Unix newlines to CRLF newlines on transfers. Disable this option again by setting the value to 0 (zero).

CURLOPT_RANGE

Pass a char * as parameter, which should contain the specified range you want. It should be in the format "X-Y", where X or Y may be left out. HTTP transfers also support several intervals, separated with commas as in "X-Y,N-M". Using this kind of multiple intervals will cause the HTTP server to send the response document in pieces (using standard MIME separation techniques). For RTSP, the formatting of a range should follow RFC 2326 Section 12.29. For RTSP, byte ranges are not permitted. Instead, ranges should be given in npt, utc, or smpte formats.

Pass a NULL to this option to disable the use of ranges. @@ -668,7 +658,27 @@

CURLOPT_CONNECT_ONLY

Pass a long. If the parameter equals 1, it tells the library to perform all the required proxy authentication and connection setup, but no data transfer. This option is useful only on HTTP URLs. -

This option is useful with the CURLINFO_LASTSOCKET option to curl_easy_getinfo(3). The library can set up the connection and then the application can obtain the most recently used socket for special data transfers. (Added in 7.15.2)

SSL and SECURITY OPTIONS

+

This option is useful with the CURLINFO_LASTSOCKET option to curl_easy_getinfo(3). The library can set up the connection and then the application can obtain the most recently used socket for special data transfers. (Added in 7.15.2) +

CURLOPT_USE_SSL +

Pass a long using one of the values from below, to make libcurl use your desired level of SSL for the transfer. (Added in 7.11.0) +

This is for enabling SSL/TLS when you use FTP, SMTP, POP3, IMAP etc. +

(This option was known as CURLOPT_FTP_SSL up to 7.16.4, and the constants were known as CURLFTPSSL_*) +

+

CURLUSESSL_NONE +

Don't attempt to use SSL. +

CURLUSESSL_TRY +

Try using SSL, proceed as normal otherwise. +

CURLUSESSL_CONTROL +

Require SSL for the control connection or fail with CURLE_USE_SSL_FAILED. +

CURLUSESSL_ALL +

Require SSL for all communication or fail with CURLE_USE_SSL_FAILED. +

+

CURLOPT_RESOLVE +

Pass a pointer to a linked list of strings with host name resolve information to use for requests with this handle. The linked list should be a fully valid list of struct curl_slist structs properly filled in. Use curl_slist_append(3) to create the list and curl_slist_free_all(3) 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. +

This option effectively pre-populates the DNS cache with entries for the host+port pair so redirects and everything that operations against the HOST+PORT will instead use your provided ADDRESS. +

You can remove names from the DNS cache again, to stop providing these fake resolves, by including a string in the linked list that uses the format "-HOST:PORT". The host name must be prefixed with a dash, and the host name and port number must exactly match what was already added previously. +

(Added in 7.12.3)

SSL and SECURITY OPTIONS

CURLOPT_SSLCERT

Pass a pointer to a zero terminated string as parameter. The string should be the file name of your certificate. The default format is "PEM" and can be changed with CURLOPT_SSLCERTTYPE. Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_setopt.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_setopt.pdf siÄ™ różniÄ… diff -Nru curl-7.21.2/docs/libcurl/curl_easy_strerror.pdf curl-7.21.3/docs/libcurl/curl_easy_strerror.pdf --- curl-7.21.2/docs/libcurl/curl_easy_strerror.pdf 2010-10-13 00:04:18.000000000 +0200 +++ curl-7.21.3/docs/libcurl/curl_easy_strerror.pdf 2010-12-15 15:07:53.000000000 +0100 @@ -65,12 +65,12 @@ - -2010-10-13T00:04:18+02:00 -2010-10-13T00:04:18+02:00 + +2010-12-15T15:07:52+01:00 +2010-12-15T15:07:52+01:00 groff version 1.20.1 - -Untitled + +Untitled @@ -80,8 +80,8 @@ endobj 2 0 obj <>endobj xref 0 14 @@ -101,7 +101,7 @@ 0000001429 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R -/ID [] +/ID [<789BAA4163F8E84DA0A4AE16415DCB0D><789BAA4163F8E84DA0A4AE16415DCB0D>] >> startxref 2981 Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_easy_unescape.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_easy_unescape.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_escape.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_escape.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_formadd.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_formadd.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_formfree.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_formfree.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_formget.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_formget.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_free.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_free.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_getdate.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_getdate.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_getenv.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_getenv.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_global_cleanup.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_global_cleanup.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_global_init_mem.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_global_init_mem.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_global_init.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_global_init.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_mprintf.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_mprintf.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_add_handle.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_add_handle.pdf siÄ™ różniÄ… diff -Nru curl-7.21.2/docs/libcurl/curl_multi_assign.pdf curl-7.21.3/docs/libcurl/curl_multi_assign.pdf --- curl-7.21.2/docs/libcurl/curl_multi_assign.pdf 2010-10-13 00:04:21.000000000 +0200 +++ curl-7.21.3/docs/libcurl/curl_multi_assign.pdf 2010-12-15 15:07:55.000000000 +0100 @@ -73,12 +73,12 @@ - -2010-10-13T00:04:21+02:00 -2010-10-13T00:04:21+02:00 + +2010-12-15T15:07:55+01:00 +2010-12-15T15:07:55+01:00 groff version 1.20.1 - -Untitled + +Untitled @@ -88,8 +88,8 @@ endobj 2 0 obj <>endobj xref 0 15 @@ -110,7 +110,7 @@ 0000002565 00000 n trailer << /Size 15 /Root 1 0 R /Info 2 0 R -/ID [] +/ID [] >> startxref 4117 Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_cleanup.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_cleanup.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_fdset.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_fdset.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_info_read.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_info_read.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_init.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_init.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_perform.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_perform.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_remove_handle.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_remove_handle.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_setopt.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_setopt.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_socket_action.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_socket_action.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_socket.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_socket.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_strerror.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_strerror.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_multi_timeout.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_multi_timeout.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_share_cleanup.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_share_cleanup.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_share_init.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_share_init.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_share_setopt.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_share_setopt.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_share_strerror.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_share_strerror.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_slist_append.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_slist_append.pdf siÄ™ różniÄ… diff -Nru curl-7.21.2/docs/libcurl/curl_slist_free_all.pdf curl-7.21.3/docs/libcurl/curl_slist_free_all.pdf --- curl-7.21.2/docs/libcurl/curl_slist_free_all.pdf 2010-10-13 00:04:13.000000000 +0200 +++ curl-7.21.3/docs/libcurl/curl_slist_free_all.pdf 2010-12-15 15:07:48.000000000 +0100 @@ -64,12 +64,12 @@ - -2010-10-13T00:04:13+02:00 -2010-10-13T00:04:13+02:00 + +2010-12-15T15:07:47+01:00 +2010-12-15T15:07:47+01:00 groff version 1.20.1 - -Untitled + +Untitled @@ -79,8 +79,8 @@ endobj 2 0 obj <>endobj xref 0 14 @@ -100,7 +100,7 @@ 0000001255 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R -/ID [] +/ID [] >> startxref 2807 Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_strequal.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_strequal.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_unescape.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_unescape.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_version_info.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_version_info.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/curl_version.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/curl_version.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/libcurl-easy.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/libcurl-easy.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/libcurl-errors.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/libcurl-errors.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/libcurl-multi.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/libcurl-multi.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/libcurl.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/libcurl.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/libcurl-share.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/libcurl-share.pdf siÄ™ różniÄ… Pliki binarne /tmp/NXtphrzFZF/curl-7.21.2/docs/libcurl/libcurl-tutorial.pdf i /tmp/VmrQ_6zWAz/curl-7.21.3/docs/libcurl/libcurl-tutorial.pdf siÄ™ różniÄ… diff -Nru curl-7.21.2/docs/libcurl/symbols-in-versions curl-7.21.3/docs/libcurl/symbols-in-versions --- curl-7.21.2/docs/libcurl/symbols-in-versions 2010-09-18 23:00:20.000000000 +0200 +++ curl-7.21.3/docs/libcurl/symbols-in-versions 2010-12-09 13:05:32.000000000 +0100 @@ -18,18 +18,26 @@ CURLAUTH_DIGEST 7.10.6 CURLAUTH_DIGEST_IE 7.19.3 CURLAUTH_GSSNEGOTIATE 7.10.6 +CURLAUTH_NONE 7.10.6 CURLAUTH_NTLM 7.10.6 +CURLAUTH_ONLY 7.21.3 CURLCLOSEPOLICY_CALLBACK 7.7 CURLCLOSEPOLICY_LEAST_RECENTLY_USED 7.7 CURLCLOSEPOLICY_LEAST_TRAFFIC 7.7 +CURLCLOSEPOLICY_NONE 7.7 CURLCLOSEPOLICY_OLDEST 7.7 CURLCLOSEPOLICY_SLOWEST 7.7 CURLE_ABORTED_BY_CALLBACK 7.1 CURLE_AGAIN 7.18.2 +CURLE_ALREADY_COMPLETE 7.7.2 CURLE_BAD_CALLING_ORDER 7.1 7.17.0 CURLE_BAD_CONTENT_ENCODING 7.10 +CURLE_BAD_DOWNLOAD_RESUME 7.10 CURLE_BAD_FUNCTION_ARGUMENT 7.1 CURLE_BAD_PASSWORD_ENTERED - 7.17.0 +CURLE_CHUNK_FAILED 7.20.1 +CURLE_CONV_FAILED 7.15.4 +CURLE_CONV_REQD 7.15.4 CURLE_COULDNT_CONNECT 7.1 CURLE_COULDNT_RESOLVE_HOST 7.1 CURLE_COULDNT_RESOLVE_PROXY 7.1 @@ -37,7 +45,9 @@ CURLE_FILESIZE_EXCEEDED 7.10.8 CURLE_FILE_COULDNT_READ_FILE 7.1 CURLE_FTP_ACCESS_DENIED 7.1 +CURLE_FTP_BAD_DOWNLOAD_RESUME 7.1 CURLE_FTP_BAD_DOWNLOAD_RESUME 7.1 7.1 +CURLE_FTP_BAD_FILE_LIST 7.20.1 CURLE_FTP_CANT_GET_HOST 7.1 CURLE_FTP_CANT_RECONNECT 7.1 7.17.0 CURLE_FTP_COULDNT_GET_SIZE 7.1 7.17.0 @@ -65,11 +75,13 @@ CURLE_HTTP_PORT_FAILED - 7.12.0 CURLE_HTTP_POST_ERROR 7.1 CURLE_HTTP_RANGE_ERROR 7.1 7.17.0 +CURLE_HTTP_RETURNED_ERROR 7.10.3 CURLE_INTERFACE_FAILED 7.12.0 CURLE_LDAP_CANNOT_BIND 7.1 CURLE_LDAP_INVALID_URL 7.10.8 CURLE_LDAP_SEARCH_FAILED 7.1 CURLE_LIBRARY_NOT_FOUND 7.1 7.17.0 +CURLE_LOGIN_DENIED 7.13.1 CURLE_MALFORMAT_USER 7.1 7.17.0 CURLE_OK 7.1 CURLE_OPERATION_TIMEDOUT 7.17.0 @@ -83,12 +95,16 @@ CURLE_RECV_ERROR 7.13.0 CURLE_REMOTE_ACCESS_DENIED 7.17.0 CURLE_REMOTE_DISK_FULL 7.17.0 +CURLE_REMOTE_FILE_EXISTS 7.17.0 +CURLE_REMOTE_FILE_NOT_FOUND 7.16.1 CURLE_RTSP_CSEQ_ERROR 7.20.0 CURLE_RTSP_SESSION_ERROR 7.20.0 CURLE_SEND_ERROR 7.13.0 +CURLE_SEND_FAIL_REWIND 7.12.3 CURLE_SHARE_IN_USE - 7.17.0 CURLE_SSH 7.16.1 CURLE_SSL_CACERT 7.10 +CURLE_SSL_CACERT_BADFILE 7.16.0 CURLE_SSL_CERTPROBLEM 7.10 CURLE_SSL_CIPHER 7.10 CURLE_SSL_CONNECT_ERROR 7.1 @@ -104,20 +120,59 @@ CURLE_TFTP_EXISTS 7.15.0 7.17.0 CURLE_TFTP_ILLEGAL 7.15.0 CURLE_TFTP_NOSUCHUSER 7.15.0 +CURLE_TFTP_NOTFOUND 7.15.0 +CURLE_TFTP_PERM 7.15.0 CURLE_TFTP_UNKNOWNID 7.15.0 CURLE_TOO_MANY_REDIRECTS 7.5 CURLE_UNKNOWN_TELNET_OPTION 7.7 CURLE_UNSUPPORTED_PROTOCOL 7.1 +CURLE_UPLOAD_FAILED 7.16.3 CURLE_URL_MALFORMAT 7.1 CURLE_URL_MALFORMAT_USER 7.1 7.17.0 CURLE_USE_SSL_FAILED 7.17.0 CURLE_WRITE_ERROR 7.1 +CURLFILETYPE_DEVICE_BLOCK 7.21.0 +CURLFILETYPE_DEVICE_CHAR 7.21.0 +CURLFILETYPE_DIRECTORY 7.21.0 +CURLFILETYPE_DOOR 7.21.0 +CURLFILETYPE_FILE 7.21.0 +CURLFILETYPE_NAMEDPIPE 7.21.0 +CURLFILETYPE_SOCKET 7.21.0 +CURLFILETYPE_SYMLINK 7.21.0 +CURLFILETYPE_UNKNOWN 7.21.0 +CURLFINFOFLAG_KNOWN_FILENAME 7.21.0 +CURLFINFOFLAG_KNOWN_FILETYPE 7.21.0 +CURLFINFOFLAG_KNOWN_GID 7.21.0 +CURLFINFOFLAG_KNOWN_HLINKCOUNT 7.21.0 +CURLFINFOFLAG_KNOWN_PERM 7.21.0 +CURLFINFOFLAG_KNOWN_SIZE 7.21.0 +CURLFINFOFLAG_KNOWN_TIME 7.21.0 +CURLFINFOFLAG_KNOWN_UID 7.21.0 +CURLFORM_ARRAY 7.9.1 +CURLFORM_BUFFER 7.9.8 +CURLFORM_BUFFERLENGTH 7.9.8 +CURLFORM_BUFFERPTR 7.9.8 +CURLFORM_CONTENTHEADER 7.9.3 +CURLFORM_CONTENTSLENGTH 7.9.1 +CURLFORM_CONTENTTYPE 7.9.1 +CURLFORM_COPYCONTENTS 7.9.1 +CURLFORM_COPYNAME 7.9.1 +CURLFORM_END 7.9.1 +CURLFORM_FILE 7.9.1 +CURLFORM_FILECONTENT 7.9.1 +CURLFORM_FILENAME 7.9.6 +CURLFORM_NAMELENGTH 7.9.1 +CURLFORM_NOTHING 7.9.1 +CURLFORM_PTRCONTENTS 7.9.1 +CURLFORM_PTRNAME 7.9.1 +CURLFORM_STREAM 7.18.2 CURLFTPAUTH_DEFAULT 7.12.2 CURLFTPAUTH_DEFAULT 7.12.2 CURLFTPAUTH_SSL 7.12.2 CURLFTPAUTH_SSL 7.12.2 CURLFTPAUTH_TLS 7.12.2 CURLFTPAUTH_TLS 7.12.2 +CURLFTPMETHOD_DEFAULT 7.15.1 CURLFTPMETHOD_MULTICWD 7.15.1 CURLFTPMETHOD_NOCWD 7.15.1 CURLFTPMETHOD_SINGLECWD 7.15.1 @@ -141,7 +196,9 @@ CURLINFO_COOKIELIST 7.14.1 CURLINFO_DATA_IN 7.9.6 CURLINFO_DATA_OUT 7.9.6 +CURLINFO_DOUBLE 7.4.1 CURLINFO_EFFECTIVE_URL 7.3 +CURLINFO_END 7.4.1 CURLINFO_FILETIME 7.5 CURLINFO_FTP_ENTRY_PATH 7.15.4 CURLINFO_HEADER_IN 7.9.6 @@ -150,10 +207,14 @@ CURLINFO_HTTPAUTH_AVAIL 7.10.8 CURLINFO_HTTP_CODE 7.4.1 7.10.8 CURLINFO_HTTP_CONNECTCODE 7.10.7 +CURLINFO_LASTONE 7.4.1 CURLINFO_LASTSOCKET 7.15.2 CURLINFO_LOCAL_IP 7.21.0 CURLINFO_LOCAL_PORT 7.21.0 +CURLINFO_LONG 7.4.1 +CURLINFO_MASK 7.4.1 CURLINFO_NAMELOOKUP_TIME 7.4.1 +CURLINFO_NONE 7.4.1 CURLINFO_NUM_CONNECTS 7.12.3 CURLINFO_OS_ERRNO 7.12.2 CURLINFO_PRETRANSFER_TIME 7.4.1 @@ -167,23 +228,61 @@ CURLINFO_REDIRECT_URL 7.18.2 CURLINFO_REQUEST_SIZE 7.4.1 CURLINFO_RESPONSE_CODE 7.10.8 +CURLINFO_RTSP_CLIENT_CSEQ 7.20.0 +CURLINFO_RTSP_CSEQ_RECV 7.20.0 +CURLINFO_RTSP_SERVER_CSEQ 7.20.0 +CURLINFO_RTSP_SESSION_ID 7.20.0 CURLINFO_SIZE_DOWNLOAD 7.4.1 CURLINFO_SIZE_UPLOAD 7.4.1 +CURLINFO_SLIST 7.12.3 CURLINFO_SPEED_DOWNLOAD 7.4.1 CURLINFO_SPEED_UPLOAD 7.4.1 +CURLINFO_SSL_DATA_IN 7.12.1 +CURLINFO_SSL_DATA_OUT 7.12.1 CURLINFO_SSL_ENGINES 7.12.3 CURLINFO_SSL_VERIFYRESULT 7.5 CURLINFO_STARTTRANSFER_TIME 7.9.2 +CURLINFO_STRING 7.4.1 CURLINFO_TEXT 7.9.6 CURLINFO_TOTAL_TIME 7.4.1 +CURLINFO_TYPEMASK 7.4.1 +CURLIOCMD_NOP 7.12.3 +CURLIOCMD_RESTARTREAD 7.12.3 +CURLIOE_FAILRESTART 7.12.3 +CURLIOE_OK 7.12.3 +CURLIOE_UNKNOWNCMD 7.12.3 +CURLKHMATCH_MISMATCH 7.19.6 +CURLKHMATCH_MISSING 7.19.6 +CURLKHMATCH_OK 7.19.6 +CURLKHSTAT_DEFER 7.19.6 +CURLKHSTAT_FINE 7.19.6 +CURLKHSTAT_FINE_ADD_TO_FILE 7.19.6 +CURLKHSTAT_REJECT 7.19.6 +CURLKHTYPE_DSS 7.19.6 +CURLKHTYPE_RSA 7.19.6 +CURLKHTYPE_RSA1 7.19.6 +CURLKHTYPE_UNKNOWN 7.19.6 +CURLMOPT_MAXCONNECTS 7.16.3 +CURLMOPT_PIPELINING 7.16.0 +CURLMOPT_SOCKETDATA 7.15.4 +CURLMOPT_SOCKETFUNCTION 7.15.4 +CURLMOPT_TIMERDATA 7.16.0 +CURLMOPT_TIMERFUNCTION 7.16.0 CURLMSG_DONE 7.9.6 +CURLMSG_NONE 7.9.6 CURLM_BAD_EASY_HANDLE 7.9.6 CURLM_BAD_HANDLE 7.9.6 +CURLM_BAD_SOCKET 7.15.4 CURLM_CALL_MULTI_PERFORM 7.9.6 CURLM_CALL_MULTI_SOCKET 7.15.5 CURLM_INTERNAL_ERROR 7.9.6 CURLM_OK 7.9.6 CURLM_OUT_OF_MEMORY 7.9.6 +CURLM_UNKNOWN_OPTION 7.15.4 +CURLOPTTYPE_FUNCTIONPOINT 7.1 +CURLOPTTYPE_LONG 7.1 +CURLOPTTYPE_OBJECTPOINT 7.1 +CURLOPTTYPE_OFF_T 7.11.0 CURLOPT_ADDRESS_SCOPE 7.19.0 CURLOPT_APPEND 7.16.4 CURLOPT_AUTOREFERER 7.1 @@ -268,7 +367,7 @@ CURLOPT_IOCTLFUNCTION 7.12.3 CURLOPT_IPRESOLVE 7.10.8 CURLOPT_ISSUERCERT 7.19.0 -CURLOPT_KEYPASSWD - 7.17.0 +CURLOPT_KEYPASSWD 7.17.0 CURLOPT_KRB4LEVEL 7.3 7.17.0 CURLOPT_KRBLEVEL 7.17.0 CURLOPT_LOCALPORT 7.15.2 @@ -328,8 +427,10 @@ CURLOPT_READFUNCTION 7.1 CURLOPT_REDIR_PROTOCOLS 7.19.4 CURLOPT_REFERER 7.1 +CURLOPT_RESOLVE 7.21.3 CURLOPT_RESUME_FROM 7.1 CURLOPT_RESUME_FROM_LARGE 7.11.0 +CURLOPT_RTSPHEADER 7.20.0 CURLOPT_RTSP_CLIENT_CSEQ 7.20.0 CURLOPT_RTSP_REQUEST 7.20.0 CURLOPT_RTSP_SERVER_CSEQ 7.20.0 @@ -338,6 +439,7 @@ CURLOPT_RTSP_TRANSPORT 7.20.0 CURLOPT_SEEKDATA 7.18.1 CURLOPT_SEEKFUNCTION 7.18.1 +CURLOPT_SERVER_RESPONSE_TIMEOUT 7.20.0 CURLOPT_SHARE 7.10 CURLOPT_SOCKOPTDATA 7.16.0 CURLOPT_SOCKOPTFUNCTION 7.16.0 @@ -353,6 +455,9 @@ CURLOPT_SOURCE_USERPWD 7.12.1 - 7.15.4 CURLOPT_SSH_AUTH_TYPES 7.16.1 CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 7.17.1 +CURLOPT_SSH_KEYDATA 7.19.6 +CURLOPT_SSH_KEYFUNCTION 7.19.6 +CURLOPT_SSH_KNOWNHOSTS 7.19.6 CURLOPT_SSH_PRIVATE_KEYFILE 7.16.1 CURLOPT_SSH_PUBLIC_KEYFILE 7.16.1 CURLOPT_SSLCERT 7.1 @@ -374,7 +479,7 @@ CURLOPT_STDERR 7.1 CURLOPT_TCP_NODELAY 7.11.2 CURLOPT_TELNETOPTIONS 7.7 -CURLOPT_TFTPBLKSIZE 7.19.4 +CURLOPT_TFTP_BLKSIZE 7.19.4 CURLOPT_TIMECONDITION 7.1 CURLOPT_TIMEOUT 7.1 CURLOPT_TIMEOUT_MS 7.16.2 @@ -392,11 +497,19 @@ CURLOPT_WRITEDATA 7.9.7 CURLOPT_WRITEFUNCTION 7.1 CURLOPT_WRITEHEADER 7.1 +CURLOPT_WRITEINFO 7.1 +CURLPAUSE_ALL 7.18.0 +CURLPAUSE_CONT 7.18.0 +CURLPAUSE_RECV 7.18.0 +CURLPAUSE_RECV_CONT 7.18.0 +CURLPAUSE_SEND 7.18.0 +CURLPAUSE_SEND_CONT 7.18.0 CURLPROTO_ALL 7.19.4 CURLPROTO_DICT 7.19.4 CURLPROTO_FILE 7.19.4 CURLPROTO_FTP 7.19.4 CURLPROTO_FTPS 7.19.4 +CURLPROTO_GOPHER 7.21.2 CURLPROTO_HTTP 7.19.4 CURLPROTO_HTTPS 7.19.4 CURLPROTO_IMAP 7.20.0 @@ -424,6 +537,19 @@ CURLPROXY_SOCKS4A 7.18.0 CURLPROXY_SOCKS5 7.10 CURLPROXY_SOCKS5_HOSTNAME 7.18.0 +CURLSHE_BAD_OPTION 7.10.3 +CURLSHE_INVALID 7.10.3 +CURLSHE_IN_USE 7.10.3 +CURLSHE_NOMEM 7.10.3 +CURLSHE_OK 7.10.3 +CURLSHOPT_LOCKFUNC 7.10.3 +CURLSHOPT_NONE 7.10.3 +CURLSHOPT_SHARE 7.10.3 +CURLSHOPT_UNLOCKFUNC 7.10.3 +CURLSHOPT_UNSHARE 7.10.3 +CURLSHOPT_USERDATA 7.10.3 +CURLSOCKTYPE_IPCXN 7.15.6 +CURLSSH_AUTH_ANY 7.16.1 CURLSSH_AUTH_DEFAULT 7.16.1 CURLSSH_AUTH_HOST 7.16.1 CURLSSH_AUTH_KEYBOARD 7.16.1 @@ -439,6 +565,7 @@ CURLUSESSL_TRY 7.17.0 CURLUSESSL_TRY 7.17.0 CURLVERSION_FIRST 7.10 +CURLVERSION_FOURTH 7.16.1 CURLVERSION_NOW 7.10 CURLVERSION_SECOND 7.11.1 CURLVERSION_THIRD 7.12.0 @@ -447,21 +574,74 @@ CURL_CHUNK_BGN_FUNC_SKIP 7.21.0 CURL_CHUNK_END_FUNC_FAIL 7.21.0 CURL_CHUNK_END_FUNC_OK 7.21.0 +CURL_CSELECT_ERR 7.16.3 +CURL_CSELECT_IN 7.16.3 +CURL_CSELECT_OUT 7.16.3 +CURL_ERROR_SIZE 7.1 CURL_FNMATCHFUNC_FAIL 7.21.0 CURL_FNMATCHFUNC_MATCH 7.21.0 CURL_FNMATCHFUNC_NOMATCH 7.21.0 +CURL_FORMADD_DISABLED 7.12.1 +CURL_FORMADD_ILLEGAL_ARRAY 7.9.8 +CURL_FORMADD_INCOMPLETE 7.9.8 +CURL_FORMADD_MEMORY 7.9.8 +CURL_FORMADD_NULL 7.9.8 +CURL_FORMADD_OK 7.9.8 +CURL_FORMADD_OPTION_TWICE 7.9.8 +CURL_FORMADD_UNKNOWN_OPTION 7.9.8 +CURL_GLOBAL_ALL 7.8 +CURL_GLOBAL_DEFAULT 7.8 +CURL_GLOBAL_NOTHING 7.8 +CURL_GLOBAL_SSL 7.8 +CURL_GLOBAL_WIN32 7.8.1 CURL_HTTP_VERSION_1_0 7.9.1 CURL_HTTP_VERSION_1_1 7.9.1 CURL_HTTP_VERSION_NONE 7.9.1 CURL_IPRESOLVE_V4 7.10.8 CURL_IPRESOLVE_V6 7.10.8 CURL_IPRESOLVE_WHATEVER 7.10.8 +CURL_LOCK_ACCESS_NONE 7.10.3 +CURL_LOCK_ACCESS_SHARED 7.10.3 +CURL_LOCK_ACCESS_SINGLE 7.10.3 +CURL_LOCK_DATA_CONNECT 7.10.3 +CURL_LOCK_DATA_COOKIE 7.10.3 +CURL_LOCK_DATA_DNS 7.10.3 +CURL_LOCK_DATA_NONE 7.10.3 +CURL_LOCK_DATA_SHARE 7.10.4 +CURL_LOCK_DATA_SSL_SESSION 7.10.3 +CURL_MAX_HTTP_HEADER 7.19.7 +CURL_MAX_WRITE_SIZE 7.9.7 CURL_NETRC_IGNORED 7.9.8 CURL_NETRC_OPTIONAL 7.9.8 CURL_NETRC_REQUIRED 7.9.8 +CURL_POLL_IN 7.14.0 +CURL_POLL_INOUT 7.14.0 +CURL_POLL_NONE 7.14.0 +CURL_POLL_OUT 7.14.0 +CURL_POLL_REMOVE 7.14.0 +CURL_READFUNC_ABORT 7.12.1 +CURL_READFUNC_PAUSE 7.18.0 +CURL_REDIR_GET_ALL 7.19.1 +CURL_REDIR_POST_301 7.19.1 +CURL_REDIR_POST_302 7.19.1 +CURL_REDIR_POST_ALL 7.19.1 +CURL_RTSPREQ_ANNOUNCE 7.20.0 +CURL_RTSPREQ_DESCRIBE 7.20.0 +CURL_RTSPREQ_GET_PARAMETER 7.20.0 +CURL_RTSPREQ_NONE 7.20.0 +CURL_RTSPREQ_OPTIONS 7.20.0 +CURL_RTSPREQ_PAUSE 7.20.0 +CURL_RTSPREQ_PLAY 7.20.0 +CURL_RTSPREQ_RECEIVE 7.20.0 +CURL_RTSPREQ_RECORD 7.20.0 +CURL_RTSPREQ_SETUP 7.20.0 +CURL_RTSPREQ_SET_PARAMETER 7.20.0 +CURL_RTSPREQ_TEARDOWN 7.20.0 CURL_SEEKFUNC_CANTSEEK 7.19.5 CURL_SEEKFUNC_FAIL 7.19.5 CURL_SEEKFUNC_OK 7.19.5 +CURL_SOCKET_BAD 7.14.0 +CURL_SOCKET_TIMEOUT 7.14.0 CURL_SSLVERSION_DEFAULT 7.9.2 CURL_SSLVERSION_SSLv2 7.9.2 CURL_SSLVERSION_SSLv3 7.9.2 @@ -469,6 +649,7 @@ CURL_TIMECOND_IFMODSINCE 7.9.7 CURL_TIMECOND_IFUNMODSINCE 7.9.7 CURL_TIMECOND_LASTMOD 7.9.7 +CURL_TIMECOND_NONE 7.9.7 CURL_VERSION_ASYNCHDNS 7.10.7 CURL_VERSION_CONV 7.15.4 CURL_VERSION_CURLDEBUG 7.19.6 @@ -483,3 +664,4 @@ CURL_VERSION_SPNEGO 7.10.8 CURL_VERSION_SSL 7.10 CURL_VERSION_SSPI 7.13.2 +CURL_WRITEFUNC_PAUSE 7.18.0 diff -Nru curl-7.21.2/docs/THANKS curl-7.21.3/docs/THANKS --- curl-7.21.2/docs/THANKS 2010-09-18 23:00:20.000000000 +0200 +++ curl-7.21.3/docs/THANKS 2010-10-13 00:20:12.000000000 +0200 @@ -102,6 +102,7 @@ Bruce Mitchener Bryan Henderson Bryan Kemp +Cameron Kaiser Camille Moncelier Caolan McNamara Carsten Lange @@ -147,6 +148,7 @@ Dan Becker Dan C Dan Fandrich +Dan Locks Dan Nelson Dan Petitt Dan Torop @@ -192,6 +194,7 @@ Didier Brisebourg Diego Casorran Dima Barsky +Dimitre Dimitrov Dimitris Sarris Dinar Dirk Eddelbuettel @@ -304,6 +307,7 @@ Harshal Pradhan Hauke Duden Heikki Korpela +Hendrik Visage Henrik Storner Hidemoto Nakada Hoi-Ho Chan @@ -519,6 +523,7 @@ Matthew Blain Matthew Clarke Maurice Barnum +Mauro Iorio Max Katsev Maxim Ivanov Maxim Perenesenko @@ -536,6 +541,7 @@ Michael Stillwell Michael Wallner Michal Bonino +Michal Gorny Michal Marek Michele Bini Mihai Ionescu @@ -572,6 +578,7 @@ Nikitinskit Dmitriy Niklas Angebrand Nikolai Kondrashov +Ning Dong Nir Soffer Nis Jorgensen Nodak Sodak @@ -632,6 +639,7 @@ Pramod Sharma Puneet Pawaia Quagmire +Quanah Gibson-Mount Rafa Muyo Rafael Sagula Rainer Canavan @@ -761,6 +769,7 @@ Tim Bartley Tim Chen Tim Costello +Tim Newsome Tim Sneddon Tobias Rundström Toby Peterson @@ -799,6 +808,7 @@ Vincent Penquerc'h Vincent Sanders Vlad Grachov +Vlad Ureche Vladimir Lazarenko Vojtech Janota Vojtech Minarik diff -Nru curl-7.21.2/include/curl/curl.h curl-7.21.3/include/curl/curl.h --- curl-7.21.2/include/curl/curl.h 2010-09-18 23:00:20.000000000 +0200 +++ curl-7.21.3/include/curl/curl.h 2010-11-11 16:39:05.000000000 +0100 @@ -585,6 +585,9 @@ #define CURLAUTH_GSSNEGOTIATE (1<<2) /* GSS-Negotiate */ #define CURLAUTH_NTLM (1<<3) /* NTLM */ #define CURLAUTH_DIGEST_IE (1<<4) /* Digest with IE flavour */ +#define CURLAUTH_ONLY (1<<31) /* used together with a single other + type to force no auth or just that + single type */ #define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE) /* all fine types set */ #define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE)) @@ -1436,6 +1439,9 @@ /* FNMATCH_FUNCTION user pointer */ CINIT(FNMATCH_DATA, OBJECTPOINT, 202), + /* send linked-list of name:port:address sets */ + CINIT(RESOLVE, OBJECTPOINT, 203), + CURLOPT_LASTENTRY /* the last unused */ } CURLoption; diff -Nru curl-7.21.2/include/curl/curlver.h curl-7.21.3/include/curl/curlver.h --- curl-7.21.2/include/curl/curlver.h 2010-10-13 00:04:32.000000000 +0200 +++ curl-7.21.3/include/curl/curlver.h 2010-12-15 15:08:04.000000000 +0100 @@ -30,13 +30,13 @@ /* This is the version number of the libcurl package from which this header file origins: */ -#define LIBCURL_VERSION "7.21.2" +#define LIBCURL_VERSION "7.21.3" /* The numeric version number is also available "in parts" by using these defines: */ #define LIBCURL_VERSION_MAJOR 7 #define LIBCURL_VERSION_MINOR 21 -#define LIBCURL_VERSION_PATCH 2 +#define LIBCURL_VERSION_PATCH 3 /* This is the numeric version of the libcurl version number, meant for easier parsing and comparions by programs. The LIBCURL_VERSION_NUM define will @@ -53,7 +53,7 @@ and it is always a greater number in a more recent release. It makes comparisons with greater than and less than work. */ -#define LIBCURL_VERSION_NUM 0x071502 +#define LIBCURL_VERSION_NUM 0x071503 /* * This is the date and time when the full source package was created. The @@ -64,6 +64,6 @@ * * "Mon Feb 12 11:35:33 UTC 2007" */ -#define LIBCURL_TIMESTAMP "Tue Oct 12 22:03:31 UTC 2010" +#define LIBCURL_TIMESTAMP "Wed Dec 15 14:07:08 UTC 2010" #endif /* __CURL_CURLVER_H */ diff -Nru curl-7.21.2/include/curl/Makefile.in curl-7.21.3/include/curl/Makefile.in --- curl-7.21.2/include/curl/Makefile.in 2010-10-01 22:49:18.000000000 +0200 +++ curl-7.21.3/include/curl/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -285,9 +285,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/curl/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/curl/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/curl/Makefile + $(AUTOMAKE) --gnu include/curl/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/lib/config-amigaos.h curl-7.21.3/lib/config-amigaos.h --- curl-7.21.2/lib/config-amigaos.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/config-amigaos.h 2010-12-03 10:22:50.000000000 +0100 @@ -86,6 +86,7 @@ #define SIZEOF_INT 4 #define SIZEOF_SHORT 2 +#define SIZEOF_SIZE_T 4 #define USE_OPENSSL 1 #define USE_SSLEAY 1 diff -Nru curl-7.21.2/lib/config.dos curl-7.21.3/lib/config.dos --- curl-7.21.2/lib/config.dos 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/config.dos 1970-01-01 01:00:00.000000000 +0100 @@ -1,169 +0,0 @@ -#ifndef HEADER_CONFIG_DOS_H -#define HEADER_CONFIG_DOS_H - - -/* ================================================================ */ -/* lib/config.dos - Hand crafted config file for DOS */ -/* ================================================================ */ - -#if defined(DJGPP) - #define OS "MSDOS/djgpp" -#elif defined(__HIGHC__) - #define OS "MSDOS/HighC" -#elif defined(__WATCOMC__) - #define OS "MSDOS/Watcom" -#else - #define OS "MSDOS/?" -#endif - -#define PACKAGE "curl" - -#define HAVE_ARPA_INET_H 1 -#define HAVE_FCNTL_H 1 -#define HAVE_GETADDRINFO 1 -#define HAVE_GETNAMEINFO 1 -#define HAVE_GETPROTOBYNAME 1 -#define HAVE_GETTIMEOFDAY 1 -#define HAVE_IO_H 1 -#define HAVE_IOCTL 1 -#define HAVE_IOCTL_FIONBIO 1 -#define HAVE_IOCTLSOCKET 1 -#define HAVE_IOCTLSOCKET_FIONBIO 1 -#define HAVE_LIMITS_H 1 -#define HAVE_LOCALE_H 1 -#define HAVE_LONGLONG 1 -#define HAVE_MEMORY_H 1 -#define HAVE_NETDB_H 1 -#define HAVE_NETINET_IN_H 1 -#define HAVE_NETINET_TCP_H 1 -#define HAVE_NET_IF_H 1 -#define HAVE_PROCESS_H 1 -#define HAVE_RECV 1 -#define HAVE_RECVFROM 1 -#define HAVE_SELECT 1 -#define HAVE_SEND 1 -#define HAVE_SETJMP_H 1 -#define HAVE_SETLOCALE 1 -#define HAVE_SETMODE 1 -#define HAVE_SIGNAL 1 -#define HAVE_SOCKET 1 -#define HAVE_SPNEGO 1 -#define HAVE_STRDUP 1 -#define HAVE_STRICMP 1 -#define HAVE_STRTOLL 1 -#define HAVE_STRUCT_TIMEVAL 1 -#define HAVE_STRUCT_IN6_ADDR 1 -#define HAVE_SYS_IOCTL_H 1 -#define HAVE_SYS_SOCKET_H 1 -#define HAVE_SYS_STAT_H 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_TERMIOS_H 1 -#define HAVE_TIME_H 1 -#define HAVE_UNISTD_H 1 - -#define NEED_MALLOC_H 1 - -#define RETSIGTYPE void -#define SIZEOF_INT 4 -#define SIZEOF_LONG_DOUBLE 16 -#define SIZEOF_SHORT 2 -#define STDC_HEADERS 1 -#define TIME_WITH_SYS_TIME 1 - -/* Qualifiers for send(), recv(), recvfrom() and getnameinfo(). */ - -#define SEND_TYPE_ARG1 int -#define SEND_QUAL_ARG2 const -#define SEND_TYPE_ARG2 void * -#define SEND_TYPE_ARG3 int -#define SEND_TYPE_ARG4 int -#define SEND_TYPE_RETV int - -#define RECV_TYPE_ARG1 int -#define RECV_TYPE_ARG2 void * -#define RECV_TYPE_ARG3 int -#define RECV_TYPE_ARG4 int -#define RECV_TYPE_RETV int - -#define RECVFROM_TYPE_ARG1 int -#define RECVFROM_TYPE_ARG2 void -#define RECVFROM_TYPE_ARG3 int -#define RECVFROM_TYPE_ARG4 int -#define RECVFROM_TYPE_ARG5 struct sockaddr -#define RECVFROM_TYPE_ARG6 int -#define RECVFROM_TYPE_RETV int -#define RECVFROM_TYPE_ARG2_IS_VOID 1 - -#define GETNAMEINFO_QUAL_ARG1 const -#define GETNAMEINFO_TYPE_ARG1 struct sockaddr * -#define GETNAMEINFO_TYPE_ARG2 int -#define GETNAMEINFO_TYPE_ARG46 int -#define GETNAMEINFO_TYPE_ARG7 int - -#define BSD - -/* CURLDEBUG definition enables memory tracking */ -/* #define CURLDEBUG */ - -/* USE_ZLIB on cmd-line */ -#ifdef USE_ZLIB - #define HAVE_ZLIB_H 1 - #define HAVE_LIBZ 1 -#endif - -/* USE_SSLEAY on cmd-line */ -#ifdef USE_SSLEAY - #define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1 - #define HAVE_OPENSSL_ENGINE_H 1 - #define OPENSSL_NO_KRB5 1 - #define USE_OPENSSL 1 -#endif - -/* to disable LDAP */ -#define CURL_DISABLE_LDAP 1 - -#define in_addr_t u_long - -#if defined(__HIGHC__) || \ - (defined(__GNUC__) && (__GNUC__ < 4)) -#define ssize_t int -#endif - -#define CURL_CA_BUNDLE getenv("CURL_CA_BUNDLE") - -/* Target HAVE_x section */ - -#if defined(DJGPP) - #define HAVE_BASENAME 1 - #define HAVE_STRCASECMP 1 - #define HAVE_SIGACTION 1 - #define HAVE_SIGSETJMP 1 - #define HAVE_SYS_TIME_H 1 - #define HAVE_VARIADIC_MACROS_GCC 1 - - #if (DJGPP_MINOR >= 4) - #define HAVE_STRLCAT 1 - #endif - - /* Because djgpp <= 2.03 doesn't have snprintf() etc. */ - #if (DJGPP_MINOR < 4) - #define _MPRINTF_REPLACE - #endif - -#elif defined(__WATCOMC__) - #define HAVE_STRCASECMP 1 - -#elif defined(__HIGHC__) - #define HAVE_SYS_TIME_H 1 -#endif - -#ifdef MSDOS /* Watt-32 */ - #define HAVE_CLOSESOCKET_CAMEL 1 - #define CloseSocket(s) close_s((s)) -#endif - -#undef word -#undef byte - -#endif /* HEADER_CONFIG_DOS_H */ - diff -Nru curl-7.21.2/lib/config-dos.h curl-7.21.3/lib/config-dos.h --- curl-7.21.2/lib/config-dos.h 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/lib/config-dos.h 2010-12-03 10:22:50.000000000 +0100 @@ -0,0 +1,170 @@ +#ifndef HEADER_CONFIG_DOS_H +#define HEADER_CONFIG_DOS_H + + +/* ================================================================ */ +/* lib/config-dos.h - Hand crafted config file for DOS */ +/* ================================================================ */ + +#if defined(DJGPP) + #define OS "MSDOS/djgpp" +#elif defined(__HIGHC__) + #define OS "MSDOS/HighC" +#elif defined(__WATCOMC__) + #define OS "MSDOS/Watcom" +#else + #define OS "MSDOS/?" +#endif + +#define PACKAGE "curl" + +#define HAVE_ARPA_INET_H 1 +#define HAVE_FCNTL_H 1 +#define HAVE_GETADDRINFO 1 +#define HAVE_GETNAMEINFO 1 +#define HAVE_GETPROTOBYNAME 1 +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_IO_H 1 +#define HAVE_IOCTL 1 +#define HAVE_IOCTL_FIONBIO 1 +#define HAVE_IOCTLSOCKET 1 +#define HAVE_IOCTLSOCKET_FIONBIO 1 +#define HAVE_LIMITS_H 1 +#define HAVE_LOCALE_H 1 +#define HAVE_LONGLONG 1 +#define HAVE_MEMORY_H 1 +#define HAVE_NETDB_H 1 +#define HAVE_NETINET_IN_H 1 +#define HAVE_NETINET_TCP_H 1 +#define HAVE_NET_IF_H 1 +#define HAVE_PROCESS_H 1 +#define HAVE_RECV 1 +#define HAVE_RECVFROM 1 +#define HAVE_SELECT 1 +#define HAVE_SEND 1 +#define HAVE_SETJMP_H 1 +#define HAVE_SETLOCALE 1 +#define HAVE_SETMODE 1 +#define HAVE_SIGNAL 1 +#define HAVE_SOCKET 1 +#define HAVE_SPNEGO 1 +#define HAVE_STRDUP 1 +#define HAVE_STRICMP 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRUCT_TIMEVAL 1 +#define HAVE_STRUCT_IN6_ADDR 1 +#define HAVE_SYS_IOCTL_H 1 +#define HAVE_SYS_SOCKET_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_TERMIOS_H 1 +#define HAVE_TIME_H 1 +#define HAVE_UNISTD_H 1 + +#define NEED_MALLOC_H 1 + +#define RETSIGTYPE void +#define SIZEOF_INT 4 +#define SIZEOF_LONG_DOUBLE 16 +#define SIZEOF_SHORT 2 +#define SIZEOF_SIZE_T 4 +#define STDC_HEADERS 1 +#define TIME_WITH_SYS_TIME 1 + +/* Qualifiers for send(), recv(), recvfrom() and getnameinfo(). */ + +#define SEND_TYPE_ARG1 int +#define SEND_QUAL_ARG2 const +#define SEND_TYPE_ARG2 void * +#define SEND_TYPE_ARG3 int +#define SEND_TYPE_ARG4 int +#define SEND_TYPE_RETV int + +#define RECV_TYPE_ARG1 int +#define RECV_TYPE_ARG2 void * +#define RECV_TYPE_ARG3 int +#define RECV_TYPE_ARG4 int +#define RECV_TYPE_RETV int + +#define RECVFROM_TYPE_ARG1 int +#define RECVFROM_TYPE_ARG2 void +#define RECVFROM_TYPE_ARG3 int +#define RECVFROM_TYPE_ARG4 int +#define RECVFROM_TYPE_ARG5 struct sockaddr +#define RECVFROM_TYPE_ARG6 int +#define RECVFROM_TYPE_RETV int +#define RECVFROM_TYPE_ARG2_IS_VOID 1 + +#define GETNAMEINFO_QUAL_ARG1 const +#define GETNAMEINFO_TYPE_ARG1 struct sockaddr * +#define GETNAMEINFO_TYPE_ARG2 int +#define GETNAMEINFO_TYPE_ARG46 int +#define GETNAMEINFO_TYPE_ARG7 int + +#define BSD + +/* CURLDEBUG definition enables memory tracking */ +/* #define CURLDEBUG */ + +/* USE_ZLIB on cmd-line */ +#ifdef USE_ZLIB + #define HAVE_ZLIB_H 1 + #define HAVE_LIBZ 1 +#endif + +/* USE_SSLEAY on cmd-line */ +#ifdef USE_SSLEAY + #define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1 + #define HAVE_OPENSSL_ENGINE_H 1 + #define OPENSSL_NO_KRB5 1 + #define USE_OPENSSL 1 +#endif + +/* to disable LDAP */ +#define CURL_DISABLE_LDAP 1 + +#define in_addr_t u_long + +#if defined(__HIGHC__) || \ + (defined(__GNUC__) && (__GNUC__ < 4)) +#define ssize_t int +#endif + +#define CURL_CA_BUNDLE getenv("CURL_CA_BUNDLE") + +/* Target HAVE_x section */ + +#if defined(DJGPP) + #define HAVE_BASENAME 1 + #define HAVE_STRCASECMP 1 + #define HAVE_SIGACTION 1 + #define HAVE_SIGSETJMP 1 + #define HAVE_SYS_TIME_H 1 + #define HAVE_VARIADIC_MACROS_GCC 1 + + #if (DJGPP_MINOR >= 4) + #define HAVE_STRLCAT 1 + #endif + + /* Because djgpp <= 2.03 doesn't have snprintf() etc. */ + #if (DJGPP_MINOR < 4) + #define _MPRINTF_REPLACE + #endif + +#elif defined(__WATCOMC__) + #define HAVE_STRCASECMP 1 + +#elif defined(__HIGHC__) + #define HAVE_SYS_TIME_H 1 +#endif + +#ifdef MSDOS /* Watt-32 */ + #define HAVE_CLOSESOCKET_CAMEL 1 + #define CloseSocket(s) close_s((s)) +#endif + +#undef word +#undef byte + +#endif /* HEADER_CONFIG_DOS_H */ + diff -Nru curl-7.21.2/lib/config-mac.h curl-7.21.3/lib/config-mac.h --- curl-7.21.2/lib/config-mac.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/config-mac.h 2010-12-03 10:22:50.000000000 +0100 @@ -61,6 +61,7 @@ #define SIZEOF_INT 4 #define SIZEOF_SHORT 2 +#define SIZEOF_SIZE_T 4 #define HAVE_GETNAMEINFO 1 #define GETNAMEINFO_QUAL_ARG1 const diff -Nru curl-7.21.2/lib/config-os400.h curl-7.21.3/lib/config-os400.h --- curl-7.21.2/lib/config-os400.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/config-os400.h 2010-12-03 10:22:50.000000000 +0100 @@ -364,6 +364,9 @@ /* The size of `short', as computed by sizeof. */ #define SIZEOF_SHORT 2 +/* The size of `size_t', as computed by sizeof. */ +#define SIZEOF_SIZE_T 8 + /* Whether long long constants must be suffixed by LL. */ #define HAVE_LL diff -Nru curl-7.21.2/lib/config-riscos.h curl-7.21.3/lib/config-riscos.h --- curl-7.21.2/lib/config-riscos.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/config-riscos.h 2010-12-03 10:22:50.000000000 +0100 @@ -350,6 +350,9 @@ /* The size of `short', as computed by sizeof. */ #define SIZEOF_SHORT 2 +/* The size of `size_t', as computed by sizeof. */ +#define SIZEOF_SIZE_T 4 + /* Define if you have the ANSI C header files. */ #undef STDC_HEADERS diff -Nru curl-7.21.2/lib/config-vms.h curl-7.21.3/lib/config-vms.h --- curl-7.21.2/lib/config-vms.h 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/lib/config-vms.h 2010-12-03 10:22:50.000000000 +0100 @@ -0,0 +1,374 @@ +#ifndef HEADER_CONFIG_VMS_H +#define HEADER_CONFIG_VMS_H + +/* */ +/* MSK, 02/05/04, Hand edited for trail build on Alpha V7.3, DEC C 6.5-003 */ +/* MSK, 03/09/04, Seems to work for all platforms I've built on so far. */ +/* Added HAVE_SYS_IOCTL_H define */ +/* TES, 10/06/04, Added MAX_INITIAL_POST_SIZE, HAVE_BASENAME */ +/* MSK, 02/02/05, Changed HAVE_TERMIOS_H to an undef since the change in */ +/* getpass.c no longer undef'd it during compile. */ +/* MSK, 02/08/05, turned two config-vms files into one by using USE_SSLEAY */ +/* MPZ, 12/28/05, changed HAVE_STRTOK_R define to use CRTL_VER */ +/* MSK, 01/27/07, needed to add HAVE_STRUCT_TIMEVAL define */ + +/* Define cpu-machine-OS */ +#if defined(__alpha) +# define OS "ALPHA-HP-VMS" +#elif defined(__vax) +# define OS "VAX-HP-VMS" +#elif defined(__ia64) +# define OS "IA64-HP-VMS" +#else +# define OS "UNKNOWN-HP-VMS" +#endif + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* The size of `int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of `long double', as computed by sizeof. */ +#define SIZEOF_LONG_DOUBLE 8 + +/* The size of `long long', as computed by sizeof. */ +#define SIZEOF_LONG_LONG 8 + +/* The size of `short', as computed by sizeof. */ +#define SIZEOF_SHORT 2 + +/* The size of `size_t', as computed by sizeof. */ +#define SIZEOF_SIZE_T 4 + +/* Define if you have the alarm function. */ +#define HAVE_ALARM 1 + +/* Define if you have the geteuid function. */ +#define HAVE_GETEUID 1 + +/* Define if you have the basename function. */ +#define HAVE_BASENAME 1 + +/* Define if you have the gethostbyaddr function. */ +#define HAVE_GETHOSTBYADDR 1 + +/* Define if you have the gethostname function. */ +#define HAVE_GETHOSTNAME 1 + +/* Define if you have the getpwuid function. */ +#define HAVE_GETPWUID 1 + +/* Define if you have the getservbyname function. */ +#define HAVE_GETSERVBYNAME 1 + +/* Define if you have the gettimeofday function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define if you have the inet_addr function. */ +#define HAVE_INET_ADDR 1 + +/* Define if you have the ioctl function. */ +#define HAVE_IOCTL 1 + +/* Define if you have a working ioctl FIONBIO function. */ +#define HAVE_IOCTL_FIONBIO 1 + +/* Define if you have a working ioctl SIOCGIFADDR function. */ +#define HAVE_IOCTL_SIOCGIFADDR 1 + +/* Define if you have the perror function. */ +#define HAVE_PERROR 1 + +/* Define if you have the select function. */ +#define HAVE_SELECT 1 + +/* Define if you have the setvbuf function. */ +#define HAVE_SETVBUF 1 + +/* Define if you have the sigaction function. */ +#define HAVE_SIGACTION 1 + +/* Define if you have the signal function. */ +#define HAVE_SIGNAL 1 + +/* Define if you have the socket function. */ +#define HAVE_SOCKET 1 + +/* Define if you have the strcasecmp function. */ +#define HAVE_STRCASECMP 1 + +/* Define if you have the strcmpi function. */ +/* #define HAVE_STRCMPI 1 */ + +/* Define if you have the strdup function. */ +#define HAVE_STRDUP 1 + +/* Define if you have the strftime function. */ +#define HAVE_STRFTIME 1 + +/* Define if you have the stricmp function. */ +/* #define HAVE_STRICMP 1 */ + +/* Define if you have the strstr function. */ +#define HAVE_STRSTR 1 + +/* Define if you have the ftruncate function. */ +#define HAVE_FTRUNCATE 1 + +/* Define if you have the uname function. */ +#define HAVE_UNAME 1 + +/* Define if you have the header file. */ +#define HAVE_ERR_H 1 + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the header file. */ +#define HAVE_GETOPT_H 1 + +/* Define if you have the header file. */ +#define HAVE_MALLOC_H 1 + +/* Define if you need the malloc.h header header file even with stdlib.h */ +/* #define NEED_MALLOC_H 1 */ + +/* Define if you have the header file. */ +#define HAVE_NET_IF_H 1 + +/* Define if you have the header file. */ +#define HAVE_NETDB_H 1 + +/* Define if you have the header file. */ +#define HAVE_NETINET_IF_ETHER_H 1 + +/* Define if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* OpenSSL section starts here */ + +/* Define if you have a working OpenSSL installation */ +#ifdef USE_SSLEAY + +/* if OpenSSL is in use */ +#define USE_OPENSSL 1 + +/* Define if you have the crypto library (-lcrypto). */ +#define HAVE_LIBCRYPTO 1 + +/* Define if you have the ssl library (-lssl). */ +#define HAVE_LIBSSL 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_CRYPTO_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_ERR_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_PEM_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_RSA_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_SSL_H 1 + +/* Define if you have the header file. */ +#define HAVE_OPENSSL_X509_H 1 + +/* + * This needs to be defined for OpenSSL 0.9.7 and other versions that have the + * ENGINE stuff supported. If an include of "openssl/engine.h" fails, then + * undefine the define below. +*/ +#define HAVE_OPENSSL_ENGINE_H 1 + +#endif /* USE_SSLEAY */ +/* OpenSSL section ends here */ + +/* Define if you have the header file. */ +#define HAVE_PWD_H 1 + +/* Define if you have the header file. */ +#define HAVE_SGTTY_H 1 + +/* Define if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the header file. */ +#undef HAVE_TERMIOS_H + +/* Define if you have the header file. */ +#define HAVE_TIME_H 1 + +/* Define if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the resolv library (-lresolv). */ +#define HAVE_LIBRESOLV 1 + +/* Define if you have the socket library (-lsocket). */ +#define HAVE_LIBSOCKET 1 + +/* Define if getaddrinfo exists and works */ +#define HAVE_GETADDRINFO 1 + +/* Define if you have the header file. */ +#define HAVE_TIMEVAL_H 1 + +/* Define if you have the timeval struct. */ +#define HAVE_STRUCT_TIMEVAL 1 + +/* Name of this package! */ +#define PACKAGE "not-used" + +/* Version number of this archive. */ +#define VERSION "not-used" + +/* Define if you have the getpass function. */ +#undef HAVE_GETPASS + +/* Define if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define if you have the `strtok_r' function. */ +/* Condition lifted from */ +#if __CRTL_VER >= 70301000 +# define HAVE_STRTOK_R 1 +#endif + +/* Define if you have the `strtoll' function. */ +#define HAVE_STRTOLL 1 + +/* Define if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you need the memory.h header file even with stdlib.h */ +#define NEED_MEMORY_H 1 + +/* Define if you have the `sigsetjmp' function. */ +#define HAVE_SIGSETJMP 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SETJMP_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STROPTS_H 1 + +/* Define if you have the getnameinfo function. */ +#define HAVE_GETNAMEINFO 1 + +/* Define to the type qualifier of arg 1 for getnameinfo. */ +#define GETNAMEINFO_QUAL_ARG1 const + +/* Define to the type of arg 1 for getnameinfo. */ +#define GETNAMEINFO_TYPE_ARG1 struct sockaddr * + +/* Define to the type of arg 2 for getnameinfo. */ +#define GETNAMEINFO_TYPE_ARG2 size_t + +/* Define to the type of args 4 and 6 for getnameinfo. */ +#define GETNAMEINFO_TYPE_ARG46 size_t + +/* Define to the type of arg 7 for getnameinfo. */ +#define GETNAMEINFO_TYPE_ARG7 int + +/* Define if you have the recv function. */ +#define HAVE_RECV 1 + +/* Define to the type of arg 1 for recv. */ +#define RECV_TYPE_ARG1 int + +/* Define to the type of arg 2 for recv. */ +#define RECV_TYPE_ARG2 void * + +/* Define to the type of arg 3 for recv. */ +#define RECV_TYPE_ARG3 int + +/* Define to the type of arg 4 for recv. */ +#define RECV_TYPE_ARG4 int + +/* Define to the function return type for recv. */ +#define RECV_TYPE_RETV int + +/* Define if you have the recvfrom function. */ +#define HAVE_RECVFROM 1 + +/* Define to the type of arg 1 for recvfrom. */ +#define RECVFROM_TYPE_ARG1 int + +/* Define to the type pointed by arg 2 for recvfrom. */ +#define RECVFROM_TYPE_ARG2 void + +/* Define if the type pointed by arg 2 for recvfrom is void. */ +#define RECVFROM_TYPE_ARG2_IS_VOID 1 + +/* Define to the type of arg 3 for recvfrom. */ +#define RECVFROM_TYPE_ARG3 int + +/* Define to the type of arg 4 for recvfrom. */ +#define RECVFROM_TYPE_ARG4 int + +/* Define to the type pointed by arg 5 for recvfrom. */ +#define RECVFROM_TYPE_ARG5 struct sockaddr + +/* Define to the type pointed by arg 6 for recvfrom. */ +#define RECVFROM_TYPE_ARG6 int + +/* Define to the function return type for recvfrom. */ +#define RECVFROM_TYPE_RETV int + +/* Define if you have the send function. */ +#define HAVE_SEND 1 + +/* Define to the type of arg 1 for send. */ +#define SEND_TYPE_ARG1 int + +/* Define to the type qualifier of arg 2 for send. */ +#define SEND_QUAL_ARG2 const + +/* Define to the type of arg 2 for send. */ +#define SEND_TYPE_ARG2 void * + +/* Define to the type of arg 3 for send. */ +#define SEND_TYPE_ARG3 int + +/* Define to the type of arg 4 for send. */ +#define SEND_TYPE_ARG4 int + +/* Define to the function return type for send. */ +#define SEND_TYPE_RETV int + +/* Define to hide dollar sign from compilers in strict ansi mode. */ +#define decc_translate_vms(__s) decc$translate_vms(__s) + +#endif /* HEADER_CONFIG_VMS_H */ diff -Nru curl-7.21.2/lib/config-win32ce.h curl-7.21.3/lib/config-win32ce.h --- curl-7.21.2/lib/config-win32ce.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/config-win32ce.h 2010-12-03 10:22:50.000000000 +0100 @@ -322,6 +322,13 @@ /* The size of `short', as computed by sizeof. */ #define SIZEOF_SHORT 2 +/* The size of `size_t', as computed by sizeof. */ +#if defined(_WIN64) +# define SIZEOF_SIZE_T 8 +#else +# define SIZEOF_SIZE_T 4 +#endif + /* ---------------------------------------------------------------- */ /* STRUCT RELATED */ /* ---------------------------------------------------------------- */ diff -Nru curl-7.21.2/lib/config-win32.h curl-7.21.3/lib/config-win32.h --- curl-7.21.2/lib/config-win32.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/config-win32.h 2010-12-03 10:22:50.000000000 +0100 @@ -345,6 +345,13 @@ /* The size of `short', as computed by sizeof. */ #define SIZEOF_SHORT 2 +/* The size of `size_t', as computed by sizeof. */ +#if defined(_WIN64) +# define SIZEOF_SIZE_T 8 +#else +# define SIZEOF_SIZE_T 4 +#endif + /* ---------------------------------------------------------------- */ /* STRUCT RELATED */ /* ---------------------------------------------------------------- */ diff -Nru curl-7.21.2/lib/connect.c curl-7.21.3/lib/connect.c --- curl-7.21.2/lib/connect.c 2010-09-18 23:18:00.000000000 +0200 +++ curl-7.21.3/lib/connect.c 2010-12-04 10:26:19.000000000 +0100 @@ -310,20 +310,20 @@ * of the connection. The resolve functions should really be changed * to take a type parameter instead. */ - long ipver = data->set.ip_version; + long ipver = conn->ip_version; int rc; if (af == AF_INET) - data->set.ip_version = CURL_IPRESOLVE_V4; + conn->ip_version = CURL_IPRESOLVE_V4; #ifdef ENABLE_IPV6 else if (af == AF_INET6) - data->set.ip_version = CURL_IPRESOLVE_V6; + conn->ip_version = CURL_IPRESOLVE_V6; #endif rc = Curl_resolv(conn, dev, 0, &h); if(rc == CURLRESOLV_PENDING) (void)Curl_wait_for_resolv(conn, &h); - data->set.ip_version = ipver; + conn->ip_version = ipver; if(h) { /* convert the resolved address, sizeof myhost >= INET_ADDRSTRLEN */ @@ -532,6 +532,16 @@ return CURLE_COULDNT_CONNECT; } +/* Copies connection info into the session handle to make it available + when the session handle is no longer associated with a connection. */ +void Curl_persistconninfo(struct connectdata *conn) +{ + memcpy(conn->data->info.conn_primary_ip, conn->primary_ip, MAX_IPADR_LEN); + memcpy(conn->data->info.conn_local_ip, conn->local_ip, MAX_IPADR_LEN); + conn->data->info.conn_primary_port = conn->primary_port; + conn->data->info.conn_local_port = conn->local_port; +} + /* retrieves ip address and port from a sockaddr structure */ static bool getaddressinfo(struct sockaddr* sa, char* addr, long* port) @@ -541,31 +551,46 @@ #ifdef ENABLE_IPV6 struct sockaddr_in6* si6 = NULL; #endif +#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX) + struct sockaddr_un* su = NULL; +#endif switch (sa->sa_family) { case AF_INET: si = (struct sockaddr_in*) sa; if(Curl_inet_ntop(sa->sa_family, &si->sin_addr, - addr, MAX_IPADR_LEN) == NULL) - return FALSE; - us_port = ntohs(si->sin_port); - *port = us_port; + addr, MAX_IPADR_LEN)) { + us_port = ntohs(si->sin_port); + *port = us_port; + return TRUE; + } break; #ifdef ENABLE_IPV6 case AF_INET6: si6 = (struct sockaddr_in6*)sa; if(Curl_inet_ntop(sa->sa_family, &si6->sin6_addr, - addr, MAX_IPADR_LEN) == NULL) - return FALSE; - us_port = ntohs(si6->sin6_port); - *port = us_port; + addr, MAX_IPADR_LEN)) { + us_port = ntohs(si6->sin6_port); + *port = us_port; + return TRUE; + } break; #endif - default: - addr[0] = '\0'; +#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX) + case AF_UNIX: + su = (struct sockaddr_un*)sa; + snprintf(addr, MAX_IPADR_LEN, "%s", su->sun_path); *port = 0; + return TRUE; +#endif + default: + break; } - return TRUE; + + addr[0] = '\0'; + *port = 0; + + return FALSE; } /* retrieves the start/end point information of a socket of an established @@ -577,43 +602,45 @@ struct Curl_sockaddr_storage ssrem; struct Curl_sockaddr_storage ssloc; struct SessionHandle *data = conn->data; - struct PureInfo *info = &conn->data->info; - if(conn->bits.reuse) - /* reusing same connection */ - return; + if(!conn->bits.reuse) { - len = sizeof(struct Curl_sockaddr_storage); - if(getpeername(sockfd, (struct sockaddr*) &ssrem, &len)) { - error = SOCKERRNO; - failf(data, "getpeername() failed with errno %d: %s", - error, Curl_strerror(conn, error)); - return; - } + len = sizeof(struct Curl_sockaddr_storage); + if(getpeername(sockfd, (struct sockaddr*) &ssrem, &len)) { + error = SOCKERRNO; + failf(data, "getpeername() failed with errno %d: %s", + error, Curl_strerror(conn, error)); + return; + } - len = sizeof(struct Curl_sockaddr_storage); - if(getsockname(sockfd, (struct sockaddr*) &ssloc, &len)) { - error = SOCKERRNO; - failf(data, "getsockname() failed with errno %d: %s", - error, Curl_strerror(conn, error)); - return; - } + len = sizeof(struct Curl_sockaddr_storage); + if(getsockname(sockfd, (struct sockaddr*) &ssloc, &len)) { + error = SOCKERRNO; + failf(data, "getsockname() failed with errno %d: %s", + error, Curl_strerror(conn, error)); + return; + } - if(!getaddressinfo((struct sockaddr*)&ssrem, - info->ip, &info->port)) { - error = ERRNO; - failf(data, "ssrem inet_ntop() failed with errno %d: %s", - error, Curl_strerror(conn, error)); - return; - } + if(!getaddressinfo((struct sockaddr*)&ssrem, + conn->primary_ip, &conn->primary_port)) { + error = ERRNO; + failf(data, "ssrem inet_ntop() failed with errno %d: %s", + error, Curl_strerror(conn, error)); + return; + } + + if(!getaddressinfo((struct sockaddr*)&ssloc, + conn->local_ip, &conn->local_port)) { + error = ERRNO; + failf(data, "ssloc inet_ntop() failed with errno %d: %s", + error, Curl_strerror(conn, error)); + return; + } - if(!getaddressinfo((struct sockaddr*)&ssloc, - info->localip, &info->localport)) { - error = ERRNO; - failf(data, "ssloc inet_ntop() failed with errno %d: %s", - error, Curl_strerror(conn, error)); - return; } + + /* persist connection info in session handle */ + Curl_persistconninfo(conn); } /* @@ -795,16 +822,13 @@ bool *connected) { struct Curl_sockaddr_ex addr; - char addr_buf[128]; int rc; int error; bool isconnected; struct SessionHandle *data = conn->data; curl_socket_t sockfd; CURLcode res = CURLE_OK; - const void *iptoprint; - struct sockaddr_in * const sa4 = (void *)&addr.sa_addr; -#ifdef ENABLE_IPV6 +#if defined(ENABLE_IPV6) && defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID) struct sockaddr_in6 * const sa6 = (void *)&addr.sa_addr; #endif @@ -855,37 +879,25 @@ sa6->sin6_scope_id = conn->scope; #endif - /* FIXME: do we have Curl_printable_address-like with struct sockaddr* as - argument? */ -#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX) - if(addr.family == AF_UNIX) { - infof(data, " Trying %s... ", - ((const struct sockaddr_un*)(&addr.sa_addr))->sun_path); - snprintf(data->info.ip, MAX_IPADR_LEN, "%s", - ((const struct sockaddr_un*)(&addr.sa_addr))->sun_path); - strcpy(conn->ip_addr_str, data->info.ip); + /* store remote address and port used in this connection attempt */ + if(!getaddressinfo((struct sockaddr*)&addr.sa_addr, + conn->primary_ip, &conn->primary_port)) { + /* malformed address or bug in inet_ntop, try next address */ + error = ERRNO; + failf(data, "sa_addr inet_ntop() failed with errno %d: %s", + error, Curl_strerror(conn, error)); + sclose(sockfd); + return CURLE_OK; } - else -#endif - { + memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN); + infof(data, " Trying %s... ", conn->ip_addr_str); + + Curl_persistconninfo(conn); + #ifdef ENABLE_IPV6 - if(addr.family == AF_INET6) { - iptoprint = &sa6->sin6_addr; - conn->bits.ipv6 = TRUE; - } - else + if(addr.family == AF_INET6) + conn->bits.ipv6 = TRUE; #endif - { - iptoprint = &sa4->sin_addr; - } - - if(Curl_inet_ntop(addr.family, iptoprint, addr_buf, - sizeof(addr_buf)) != NULL) { - infof(data, " Trying %s... ", addr_buf); - snprintf(data->info.ip, MAX_IPADR_LEN, "%s", addr_buf); - strcpy(conn->ip_addr_str, data->info.ip); - } - } if(data->set.tcp_nodelay) tcpnodelay(conn, sockfd); @@ -945,7 +957,7 @@ default: /* unknown error, fallthrough and try another address! */ failf(data, "Failed to connect to %s: %s", - addr_buf, Curl_strerror(conn,error)); + conn->ip_addr_str, Curl_strerror(conn,error)); data->state.os_errno = error; break; } diff -Nru curl-7.21.2/lib/connect.h curl-7.21.3/lib/connect.h --- curl-7.21.2/lib/connect.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/connect.h 2010-12-01 19:45:49.000000000 +0100 @@ -69,4 +69,6 @@ void Curl_updateconninfo(struct connectdata *conn, curl_socket_t sockfd); +void Curl_persistconninfo(struct connectdata *conn); + #endif diff -Nru curl-7.21.2/lib/cookie.c curl-7.21.3/lib/cookie.c --- curl-7.21.2/lib/cookie.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/cookie.c 2010-12-01 19:45:49.000000000 +0100 @@ -353,8 +353,8 @@ break; } co->expires = - atoi((*co->maxage=='\"')?&co->maxage[1]:&co->maxage[0]) + - (long)now; + strtol((*co->maxage=='\"')?&co->maxage[1]:&co->maxage[0],NULL,10) + + (long)now; } else if(Curl_raw_equal("expires", name)) { strstore(&co->expirestr, whatptr); diff -Nru curl-7.21.2/lib/curl_addrinfo.c curl-7.21.3/lib/curl_addrinfo.c --- curl-7.21.2/lib/curl_addrinfo.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/curl_addrinfo.c 2010-12-01 19:45:49.000000000 +0100 @@ -49,6 +49,7 @@ #endif #include "curl_addrinfo.h" +#include "inet_pton.h" #define _MPRINTF_REPLACE /* use our functions only */ #include @@ -117,12 +118,12 @@ const struct addrinfo *hints, Curl_addrinfo **result) { - const struct addrinfo *ainext; const struct addrinfo *ai; struct addrinfo *aihead; Curl_addrinfo *cafirst = NULL; Curl_addrinfo *calast = NULL; Curl_addrinfo *ca; + size_t ss_size; int error; *result = NULL; /* assume failure */ @@ -131,7 +132,28 @@ if(error) return error; - for(ai = aihead; ai != NULL; ai = ainext) { + /* traverse the addrinfo list */ + + for(ai = aihead; ai != NULL; ai = ai->ai_next) { + + /* ignore elements with unsupported address family, */ + /* settle family-specific sockaddr structure size. */ + if(ai->ai_family == AF_INET) + ss_size = sizeof(struct sockaddr_in); +#ifdef ENABLE_IPV6 + else if(ai->ai_family == AF_INET6) + ss_size = sizeof(struct sockaddr_in6); +#endif + else + continue; + + /* ignore elements without required address info */ + if((ai->ai_addr == NULL) || !(ai->ai_addrlen > 0)) + continue; + + /* ignore elements with bogus address size */ + if((size_t)ai->ai_addrlen < ss_size) + continue; if((ca = malloc(sizeof(Curl_addrinfo))) == NULL) { error = EAI_MEMORY; @@ -139,35 +161,28 @@ } /* copy each structure member individually, member ordering, */ - /* size, or padding might be different for each structure. */ + /* size, or padding might be different for each platform. */ ca->ai_flags = ai->ai_flags; ca->ai_family = ai->ai_family; ca->ai_socktype = ai->ai_socktype; ca->ai_protocol = ai->ai_protocol; - ca->ai_addrlen = 0; + ca->ai_addrlen = (curl_socklen_t)ss_size; ca->ai_addr = NULL; ca->ai_canonname = NULL; ca->ai_next = NULL; - if((ai->ai_addrlen > 0) && (ai->ai_addr != NULL)) { - /* typecast below avoid warning on at least win64: - conversion from 'size_t' to 'curl_socklen_t', possible loss of data - */ - ca->ai_addrlen = (curl_socklen_t)ai->ai_addrlen; - if((ca->ai_addr = malloc(ca->ai_addrlen)) == NULL) { - error = EAI_MEMORY; - free(ca); - break; - } - memcpy(ca->ai_addr, ai->ai_addr, ca->ai_addrlen); + if((ca->ai_addr = malloc(ss_size)) == NULL) { + error = EAI_MEMORY; + free(ca); + break; } + memcpy(ca->ai_addr, ai->ai_addr, ss_size); if(ai->ai_canonname != NULL) { if((ca->ai_canonname = strdup(ai->ai_canonname)) == NULL) { error = EAI_MEMORY; - if(ca->ai_addr) - free(ca->ai_addr); + free(ca->ai_addr); free(ca); break; } @@ -182,8 +197,6 @@ calast->ai_next = ca; calast = ca; - /* fetch next element fom the addrinfo list */ - ainext = ai->ai_next; } /* destroy the addrinfo list */ @@ -195,6 +208,18 @@ Curl_freeaddrinfo(cafirst); cafirst = NULL; } + else if(!cafirst) { +#ifdef EAI_NONAME + /* rfc3493 conformant */ + error = EAI_NONAME; +#else + /* rfc3493 obsoleted */ + error = EAI_NODATA; +#endif +#ifdef USE_WINSOCK + SET_SOCKERRNO(error); +#endif + } *result = cafirst; @@ -434,6 +459,26 @@ return ai; } +/* + * Given an IPv4 or IPv6 dotted string address, this converts it to a proper + * allocated Curl_addrinfo struct and returns it. + */ +Curl_addrinfo *Curl_str2addr(char *address, int port) +{ + struct in_addr in; + if(Curl_inet_pton(AF_INET, address, &in) > 0) + /* This is a dotted IP address 123.123.123.123-style */ + return Curl_ip2addr(AF_INET, &in, address, port); +#ifdef ENABLE_IPV6 + else { + struct in6_addr in6; + if(Curl_inet_pton(AF_INET6, address, &in6) > 0) + /* This is a dotted IPv6 address ::1-style */ + return Curl_ip2addr(AF_INET6, &in6, address, port); + } +#endif + return NULL; /* bad input format */ +} #if defined(CURLDEBUG) && defined(HAVE_FREEADDRINFO) /* diff -Nru curl-7.21.2/lib/curl_addrinfo.h curl-7.21.3/lib/curl_addrinfo.h --- curl-7.21.2/lib/curl_addrinfo.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/curl_addrinfo.h 2010-11-08 08:56:21.000000000 +0100 @@ -80,6 +80,8 @@ Curl_addrinfo * Curl_ip2addr(int af, const void *inaddr, const char *hostname, int port); +Curl_addrinfo *Curl_str2addr(char *dotted, int port); + #if defined(CURLDEBUG) && defined(HAVE_FREEADDRINFO) void curl_dofreeaddrinfo(struct addrinfo *freethis, diff -Nru curl-7.21.2/lib/curl_config.h.in curl-7.21.3/lib/curl_config.h.in --- curl-7.21.2/lib/curl_config.h.in 2010-10-01 22:49:58.000000000 +0200 +++ curl-7.21.3/lib/curl_config.h.in 2010-12-15 15:01:15.000000000 +0100 @@ -177,6 +177,15 @@ /* Define to 1 if you have the freeifaddrs function. */ #undef HAVE_FREEIFADDRS +/* Define to 1 if you have the fsetxattr function. */ +#undef HAVE_FSETXATTR + +/* fsetxattr() takes 5 args */ +#undef HAVE_FSETXATTR_5 + +/* fsetxattr() takes 6 args */ +#undef HAVE_FSETXATTR_6 + /* Define to 1 if you have the ftruncate function. */ #undef HAVE_FTRUNCATE @@ -397,6 +406,9 @@ /* Define to 1 if you have the `libssh2_scp_send64' function. */ #undef HAVE_LIBSSH2_SCP_SEND64 +/* Define to 1 if you have the `libssh2_session_handshake' function. */ +#undef HAVE_LIBSSH2_SESSION_HANDSHAKE + /* Define to 1 if you have the `libssh2_version' function. */ #undef HAVE_LIBSSH2_VERSION @@ -701,6 +713,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UTIME_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_XATTR_H + /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H diff -Nru curl-7.21.2/lib/curl_rtmp.c curl-7.21.3/lib/curl_rtmp.c --- curl-7.21.2/lib/curl_rtmp.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/curl_rtmp.c 2010-12-06 15:33:10.000000000 +0100 @@ -51,7 +51,7 @@ static CURLcode rtmp_do(struct connectdata *conn, bool *done); static CURLcode rtmp_done(struct connectdata *conn, CURLcode, bool premature); static CURLcode rtmp_connect(struct connectdata *conn, bool *done); -static CURLcode rtmp_disconnect(struct connectdata *conn); +static CURLcode rtmp_disconnect(struct connectdata *conn, bool dead_connection); static Curl_recv rtmp_recv; static Curl_send rtmp_send; @@ -236,9 +236,11 @@ return CURLE_OK; } -static CURLcode rtmp_disconnect(struct connectdata *conn) +static CURLcode rtmp_disconnect(struct connectdata *conn, + bool dead_connection) { RTMP *r = conn->proto.generic; + (void)dead_connection; if (r) { conn->proto.generic = NULL; RTMP_Close(r); diff -Nru curl-7.21.2/lib/easy.c curl-7.21.3/lib/easy.c --- curl-7.21.2/lib/easy.c 2010-10-01 22:48:39.000000000 +0200 +++ curl-7.21.3/lib/easy.c 2010-12-07 14:52:44.000000000 +0100 @@ -626,125 +626,117 @@ */ CURL *curl_easy_duphandle(CURL *incurl) { - bool fail = TRUE; struct SessionHandle *data=(struct SessionHandle *)incurl; struct SessionHandle *outcurl = calloc(1, sizeof(struct SessionHandle)); - if(NULL == outcurl) - return NULL; /* failure */ - - do { + goto fail; - /* - * We setup a few buffers we need. We should probably make them - * get setup on-demand in the code, as that would probably decrease - * the likeliness of us forgetting to init a buffer here in the future. - */ - outcurl->state.headerbuff = malloc(HEADERSIZE); - if(!outcurl->state.headerbuff) { - break; - } - outcurl->state.headersize=HEADERSIZE; - - /* copy all userdefined values */ - if(Curl_dupset(outcurl, data) != CURLE_OK) - break; + /* + * We setup a few buffers we need. We should probably make them + * get setup on-demand in the code, as that would probably decrease + * the likeliness of us forgetting to init a buffer here in the future. + */ + outcurl->state.headerbuff = malloc(HEADERSIZE); + if(!outcurl->state.headerbuff) + goto fail; + outcurl->state.headersize = HEADERSIZE; + + /* copy all userdefined values */ + if(Curl_dupset(outcurl, data) != CURLE_OK) + goto fail; - /* the connection cache is setup on demand */ - outcurl->state.connc = NULL; + /* the connection cache is setup on demand */ + outcurl->state.connc = NULL; - outcurl->state.lastconnect = -1; + outcurl->state.lastconnect = -1; - outcurl->progress.flags = data->progress.flags; - outcurl->progress.callback = data->progress.callback; + outcurl->progress.flags = data->progress.flags; + outcurl->progress.callback = data->progress.callback; #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) - if(data->cookies) { - /* If cookies are enabled in the parent handle, we enable them - in the clone as well! */ - outcurl->cookies = Curl_cookie_init(data, - data->cookies->filename, - outcurl->cookies, - data->set.cookiesession); - if(!outcurl->cookies) { - break; - } - } + if(data->cookies) { + /* If cookies are enabled in the parent handle, we enable them + in the clone as well! */ + outcurl->cookies = Curl_cookie_init(data, + data->cookies->filename, + outcurl->cookies, + data->set.cookiesession); + if(!outcurl->cookies) + goto fail; + } #endif /* CURL_DISABLE_HTTP */ - /* duplicate all values in 'change' */ + /* duplicate all values in 'change' */ #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) - if(data->change.cookielist) { - outcurl->change.cookielist = - Curl_slist_duplicate(data->change.cookielist); - - if (!outcurl->change.cookielist) - break; - } + if(data->change.cookielist) { + outcurl->change.cookielist = + Curl_slist_duplicate(data->change.cookielist); + if(!outcurl->change.cookielist) + goto fail; + } #endif /* CURL_DISABLE_HTTP */ - if(data->change.url) { - outcurl->change.url = strdup(data->change.url); - if(!outcurl->change.url) - break; - outcurl->change.url_alloc = TRUE; - } - - if(data->change.referer) { - outcurl->change.referer = strdup(data->change.referer); - if(!outcurl->change.referer) - break; - outcurl->change.referer_alloc = TRUE; - } + if(data->change.url) { + outcurl->change.url = strdup(data->change.url); + if(!outcurl->change.url) + goto fail; + outcurl->change.url_alloc = TRUE; + } + + if(data->change.referer) { + outcurl->change.referer = strdup(data->change.referer); + if(!outcurl->change.referer) + goto fail; + outcurl->change.referer_alloc = TRUE; + } #ifdef USE_ARES - /* If we use ares, we clone the ares channel for the new handle */ - if(ARES_SUCCESS != ares_dup(&outcurl->state.areschannel, - data->state.areschannel)) - break; + /* If we use ares, we clone the ares channel for the new handle */ + if(ARES_SUCCESS != ares_dup(&outcurl->state.areschannel, + data->state.areschannel)) + goto fail; #endif #if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV) - outcurl->inbound_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST, - CURL_ICONV_CODESET_OF_NETWORK); - outcurl->outbound_cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK, - CURL_ICONV_CODESET_OF_HOST); - outcurl->utf8_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST, - CURL_ICONV_CODESET_FOR_UTF8); + outcurl->inbound_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST, + CURL_ICONV_CODESET_OF_NETWORK); + outcurl->outbound_cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK, + CURL_ICONV_CODESET_OF_HOST); + outcurl->utf8_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST, + CURL_ICONV_CODESET_FOR_UTF8); #endif - Curl_easy_initHandleData(outcurl); + Curl_easy_initHandleData(outcurl); - outcurl->magic = CURLEASY_MAGIC_NUMBER; + outcurl->magic = CURLEASY_MAGIC_NUMBER; - fail = FALSE; /* we reach this point and thus we are OK */ + /* we reach this point and thus we are OK */ - } while(0); + return outcurl; - if(fail) { - if(outcurl) { - if(outcurl->state.connc && - (outcurl->state.connc->type == CONNCACHE_PRIVATE)) - Curl_rm_connc(outcurl->state.connc); - if(outcurl->state.headerbuff) - free(outcurl->state.headerbuff); + fail: + + if(outcurl) { + if(outcurl->state.connc && + (outcurl->state.connc->type == CONNCACHE_PRIVATE)) + Curl_rm_connc(outcurl->state.connc); + if(outcurl->state.headerbuff) + free(outcurl->state.headerbuff); #if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_COOKIES) - if(outcurl->change.cookielist) - curl_slist_free_all(outcurl->change.cookielist); + if(outcurl->change.cookielist) + curl_slist_free_all(outcurl->change.cookielist); #endif - if(outcurl->change.url) - free(outcurl->change.url); - if(outcurl->change.referer) - free(outcurl->change.referer); - Curl_freeset(outcurl); - free(outcurl); /* free the memory again */ - outcurl = NULL; - } + if(outcurl->change.url) + free(outcurl->change.url); + if(outcurl->change.referer) + free(outcurl->change.referer); + Curl_freeset(outcurl); + free(outcurl); } - return outcurl; + return NULL; } /* diff -Nru curl-7.21.2/lib/file.c curl-7.21.3/lib/file.c --- curl-7.21.2/lib/file.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/file.c 2010-12-01 19:45:49.000000000 +0100 @@ -146,7 +146,7 @@ if(data->state.use_range && data->state.range) { from=curlx_strtoofft(data->state.range, &ptr, 0); - while(*ptr && (isspace((int)*ptr) || (*ptr=='-'))) + while(*ptr && (ISSPACE(*ptr) || (*ptr=='-'))) ptr++; to=curlx_strtoofft(ptr, &ptr2, 0); if(ptr == ptr2) { diff -Nru curl-7.21.2/lib/formdata.c curl-7.21.3/lib/formdata.c --- curl-7.21.2/lib/formdata.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/formdata.c 2010-11-08 08:56:20.000000000 +0100 @@ -123,6 +123,7 @@ #include "curl_rand.h" #include "strequal.h" #include "curl_memory.h" +#include "sendf.h" #define _MPRINTF_REPLACE /* use our functions only */ #include @@ -975,7 +976,7 @@ curl_off_t size; struct FormData *data, *ptr; - rc = Curl_getFormData(&data, form, NULL, &size); + rc = Curl_getformdata(NULL, &data, form, NULL, &size); if(rc != CURLE_OK) return (int)rc; @@ -1105,15 +1106,20 @@ } /* - * Curl_getFormData() converts a linked list of "meta data" into a complete + * Curl_getformdata() converts a linked list of "meta data" into a complete * (possibly huge) multipart formdata. The input list is in 'post', while the * output resulting linked lists gets stored in '*finalform'. *sizep will get * the total size of the whole POST. * A multipart/form_data content-type is built, unless a custom content-type * is passed in 'custom_content_type'. + * + * This function will not do a failf() for the potential memory failures but + * should for all other errors it spots. Just note that this function MAY get + * a NULL pointer in the 'data' argument. */ -CURLcode Curl_getFormData(struct FormData **finalform, +CURLcode Curl_getformdata(struct SessionHandle *data, + struct FormData **finalform, struct curl_httppost *post, const char *custom_content_type, curl_off_t *sizep) @@ -1271,23 +1277,6 @@ return result; } -#if 0 - /* The header Content-Transfer-Encoding: seems to confuse some receivers - * (like the built-in PHP engine). While I can't see any reason why it - * should, I can just as well skip this to the benefit of the users who - * are using such confused receivers. - */ - - if(file->contenttype && - !checkprefix("text/", file->contenttype)) { - /* this is not a text content, mention our binary encoding */ - result = AddFormDataf(&form, &size, - "\r\nContent-Transfer-Encoding: binary"); - if(result) - break; - } -#endif - result = AddFormDataf(&form, &size, "\r\n\r\n"); if(result) break; @@ -1327,50 +1316,31 @@ break; } } - - if(result) { - Curl_formclean(&firstform); - free(boundary); - return result; - } - } else { -#ifdef _FORM_DEBUG - fprintf(stderr, - "\n==> Curl_getFormData couldn't open/read \"%s\"\n", - file->contents); -#endif - Curl_formclean(&firstform); - free(boundary); + if(data) + failf(data, "couldn't open file \"%s\"\n", file->contents); *finalform = NULL; - return CURLE_READ_ERROR; + result = CURLE_READ_ERROR; } - } - else if(post->flags & HTTPPOST_BUFFER) { + else if(post->flags & HTTPPOST_BUFFER) /* include contents of buffer */ result = AddFormData(&form, FORM_CONTENT, post->buffer, post->bufferlength, &size); - if(result) - break; - } - else if(post->flags & HTTPPOST_CALLBACK) { + else if(post->flags & HTTPPOST_CALLBACK) /* the contents should be read with the callback and the size is set with the contentslength */ result = AddFormData(&form, FORM_CALLBACK, post->userp, post->contentslength, &size); - if(result) - break; - } - else { + else /* include the contents we got */ result = AddFormData(&form, FORM_CONTENT, post->contents, post->contentslength, &size); - if(result) - break; - } - } while((file = file->more) != NULL); /* for each specified file for this field */ + + file = file->more; + } while(file && !result); /* for each specified file for this field */ + if(result) { Curl_formclean(&firstform); free(boundary); @@ -1666,25 +1636,25 @@ CURLFORM_END)) ++errors; - rc = Curl_getFormData(&form, httppost, NULL, &size); + rc = Curl_getformdata(NULL, &form, httppost, NULL, &size); if(rc != CURLE_OK) { if(rc != CURLE_READ_ERROR) { const char *errortext = curl_easy_strerror(rc); - fprintf(stdout, "\n==> Curl_getFormData error: %s\n", errortext); + fprintf(stdout, "\n==> Curl_getformdata error: %s\n", errortext); } return 0; } Curl_FormInit(&formread, form); - do { + for(;;) { nread = Curl_FormReader(buffer, 1, sizeof(buffer), (FILE *)&formread); if(nread < 1) break; fwrite(buffer, nread, 1, stdout); - } while(1); + } fprintf(stdout, "size: "); fprintf(stdout, "%" FORMAT_OFF_T, size); diff -Nru curl-7.21.2/lib/formdata.h curl-7.21.3/lib/formdata.h --- curl-7.21.2/lib/formdata.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/formdata.h 2010-10-20 14:43:59.000000000 +0200 @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2010, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -70,11 +70,11 @@ int Curl_FormInit(struct Form *form, struct FormData *formdata ); -CURLcode -Curl_getFormData(struct FormData **, - struct curl_httppost *post, - const char *custom_contenttype, - curl_off_t *size); +CURLcode Curl_getformdata(struct SessionHandle *data, + struct FormData **, + struct curl_httppost *post, + const char *custom_contenttype, + curl_off_t *size); /* fread() emulation */ size_t Curl_FormReader(char *buffer, diff -Nru curl-7.21.2/lib/ftp.c curl-7.21.3/lib/ftp.c --- curl-7.21.2/lib/ftp.c 2010-10-10 23:22:27.000000000 +0200 +++ curl-7.21.3/lib/ftp.c 2010-12-06 14:41:18.000000000 +0100 @@ -136,7 +136,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode, bool premature); static CURLcode ftp_connect(struct connectdata *conn, bool *done); -static CURLcode ftp_disconnect(struct connectdata *conn); +static CURLcode ftp_disconnect(struct connectdata *conn, bool dead_connection); static CURLcode ftp_nextconnect(struct connectdata *conn); static CURLcode ftp_multi_statemach(struct connectdata *conn, bool *done); static int ftp_getsock(struct connectdata *conn, @@ -379,7 +379,7 @@ size_t len = pp->nread_resp; if((len > 3) && LASTLINE(line)) { - *code = atoi(line); + *code = curlx_sltosi(strtol(line, NULL, 10)); return 1; } return 0; @@ -405,13 +405,13 @@ /* FIXME: some errorchecking perhaps... ***/ switch(code) { case 631: - code = Curl_sec_read_msg(conn, buf, prot_safe); + code = Curl_sec_read_msg(conn, buf, PROT_SAFE); break; case 632: - code = Curl_sec_read_msg(conn, buf, prot_private); + code = Curl_sec_read_msg(conn, buf, PROT_PRIVATE); break; case 633: - code = Curl_sec_read_msg(conn, buf, prot_confidential); + code = Curl_sec_read_msg(conn, buf, PROT_CONFIDENTIAL); break; default: /* normal ftp stuff we pass through! */ @@ -425,6 +425,12 @@ if(ftpcode) *ftpcode = code; + if(421 == code) + /* 421 means "Service not available, closing control connection." and FTP + * servers use it to signal that idle session timeout has been exceeded. + * If we ignored the response, it could end up hanging in some cases. */ + return CURLE_OPERATION_TIMEDOUT; + return result; } @@ -1360,18 +1366,16 @@ else { curl_off_t passed=0; do { - curl_off_t readthisamountnow = (data->state.resume_from - passed); - curl_off_t actuallyread; - - if(readthisamountnow > BUFSIZE) - readthisamountnow = BUFSIZE; + size_t readthisamountnow = + (data->state.resume_from - passed > CURL_OFF_T_C(BUFSIZE)) ? + BUFSIZE : curlx_sotouz(data->state.resume_from - passed); - actuallyread = (curl_off_t) - conn->fread_func(data->state.buffer, 1, (size_t)readthisamountnow, + size_t actuallyread = + conn->fread_func(data->state.buffer, 1, readthisamountnow, conn->fread_in); passed += actuallyread; - if((actuallyread <= 0) || (actuallyread > readthisamountnow)) { + if((actuallyread == 0) || (actuallyread > readthisamountnow)) { /* this checks for greater-than only to make sure that the CURL_READFUNC_ABORT return code still aborts */ failf(data, "Failed to read data"); @@ -3083,6 +3087,10 @@ #endif if(conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) { + if(!result && ftpc->dont_check && data->req.maxdownload > 0) + /* partial download completed */ + result = Curl_pp_sendf(pp, "ABOR"); + if(conn->ssl[SECONDARYSOCKET].use) { /* The secondary socket is using SSL so we must close down that part first before we close the socket for real */ @@ -3097,7 +3105,7 @@ } } - if((ftp->transfer == FTPTRANSFER_BODY) && ftpc->ctl_valid && + if(!result && (ftp->transfer == FTPTRANSFER_BODY) && ftpc->ctl_valid && pp->pending_resp && !premature) { /* * Let's see what the server says about the transfer we just performed, @@ -3123,6 +3131,14 @@ if(result) return result; + if(ftpc->dont_check && data->req.maxdownload > 0) { + /* we have just sent ABOR and there is no reliable way to check if it was + * successful or not; we have to close the connection now */ + infof(data, "partial download completed, closing connection\n"); + conn->bits.close = TRUE; /* mark for closure */ + return result; + } + if(!ftpc->dont_check) { /* 226 Transfer complete, 250 Requested file action okay, completed. */ if((ftpcode != 226) && (ftpcode != 250)) { @@ -3562,14 +3578,12 @@ return CURLE_OK; } +/* This is called recursively */ static CURLcode wc_statemach(struct connectdata *conn) { - struct ftp_conn *ftpc = &conn->proto.ftpc; - struct WildcardData *wildcard = &(conn->data->wildcard); - struct ftp_wc_tmpdata *ftp_tmp = wildcard->tmp; - char *tmp_path; + struct WildcardData * const wildcard = &(conn->data->wildcard); CURLcode ret = CURLE_OK; - long userresponse = 0; + switch (wildcard->state) { case CURLWC_INIT: ret = init_wc_data(conn); @@ -3580,10 +3594,10 @@ wildcard->state = ret ? CURLWC_ERROR : CURLWC_MATCHING; break; - case CURLWC_MATCHING: + case CURLWC_MATCHING: { /* In this state is LIST response successfully parsed, so lets restore previous WRITEFUNCTION callback and WRITEDATA pointer */ - ftp_tmp = wildcard->tmp; + 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; wildcard->state = CURLWC_DOWNLOADING; @@ -3598,13 +3612,14 @@ wildcard->state = CURLWC_CLEAN; return CURLE_REMOTE_FILE_NOT_FOUND; } - ret = wc_statemach(conn); - break; + return wc_statemach(conn); + } case CURLWC_DOWNLOADING: { /* filelist has at least one file, lets get first one */ + struct ftp_conn *ftpc = &conn->proto.ftpc; struct curl_fileinfo *finfo = wildcard->filelist->head->ptr; - tmp_path = malloc(strlen(conn->data->state.path) + + char *tmp_path = malloc(strlen(conn->data->state.path) + strlen(finfo->filename) + 1); if(!tmp_path) { return CURLE_OUT_OF_MEMORY; @@ -3623,7 +3638,7 @@ infof(conn->data, "Wildcard - START of \"%s\"\n", finfo->filename); if(conn->data->set.chunk_bgn) { - userresponse = conn->data->set.chunk_bgn( + long userresponse = conn->data->set.chunk_bgn( finfo, wildcard->customptr, (int)wildcard->filelist->size); switch(userresponse) { case CURL_CHUNK_BGN_FUNC_SKIP: @@ -3666,16 +3681,17 @@ Curl_llist_remove(wildcard->filelist, wildcard->filelist->head, NULL); wildcard->state = (wildcard->filelist->size == 0) ? CURLWC_CLEAN : CURLWC_DOWNLOADING; - ret = wc_statemach(conn); - } break; + return wc_statemach(conn); + } - case CURLWC_CLEAN: + case CURLWC_CLEAN: { + struct ftp_wc_tmpdata *ftp_tmp = wildcard->tmp; ret = CURLE_OK; if(ftp_tmp) { ret = Curl_ftp_parselist_geterror(ftp_tmp->parser); } wildcard->state = ret ? CURLWC_ERROR : CURLWC_DONE; - break; + } break; case CURLWC_DONE: case CURLWC_ERROR: @@ -3766,11 +3782,12 @@ for(;;) { #if defined(HAVE_KRB4) || defined(HAVE_GSSAPI) - conn->data_prot = prot_cmd; + conn->data_prot = PROT_CMD; #endif res = Curl_write(conn, conn->sock[FIRSTSOCKET], sptr, write_len, &bytes_written); #if defined(HAVE_KRB4) || defined(HAVE_GSSAPI) + DEBUGASSERT(data_sec > PROT_NONE && data_sec < PROT_LAST); conn->data_prot = data_sec; #endif @@ -3823,7 +3840,7 @@ * Disconnect from an FTP server. Cleanup protocol-specific per-connection * resources. BLOCKING. */ -static CURLcode ftp_disconnect(struct connectdata *conn) +static CURLcode ftp_disconnect(struct connectdata *conn, bool dead_connection) { struct ftp_conn *ftpc= &conn->proto.ftpc; struct pingpong *pp = &ftpc->pp; @@ -3835,6 +3852,8 @@ ftp_quit() will check the state of ftp->ctl_valid. If it's ok it will try to send the QUIT command, otherwise it will just return. */ + if(dead_connection) + ftpc->ctl_valid = FALSE; /* The FTP session may or may not have been allocated/setup at this point! */ (void)ftp_quit(conn); /* ignore errors on the QUIT */ @@ -3959,9 +3978,9 @@ else { /* parse the URL path into separate path components */ while((slash_pos = strchr(cur_pos, '/')) != NULL) { - /* 1 or 0 to indicate absolute directory */ - bool absolute_dir = (bool)((cur_pos - data->state.path > 0) && - (ftpc->dirdepth == 0)); + /* 1 or 0 pointer offset to indicate absolute directory */ + ssize_t absolute_dir = ((cur_pos - data->state.path > 0) && + (ftpc->dirdepth == 0))?1:0; /* seek out the next path component */ if(slash_pos-cur_pos) { diff -Nru curl-7.21.2/lib/getinfo.c curl-7.21.3/lib/getinfo.c --- curl-7.21.2/lib/getinfo.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/getinfo.c 2010-12-01 19:45:49.000000000 +0100 @@ -67,10 +67,10 @@ info->request_size = 0; info->numconnects = 0; - info->ip[0] = 0; - info->port = 0; - info->localip[0] = 0; - info->localport = 0; + info->conn_primary_ip[0] = '\0'; + info->conn_local_ip[0] = '\0'; + info->conn_primary_port = 0; + info->conn_local_port = 0; return CURLE_OK; } @@ -238,20 +238,20 @@ break; case CURLINFO_PRIMARY_IP: /* Return the ip address of the most recent (primary) connection */ - *param_charp = data->info.ip; + *param_charp = data->info.conn_primary_ip; break; case CURLINFO_PRIMARY_PORT: /* Return the (remote) port of the most recent (primary) connection */ - *param_longp = data->info.port; + *param_longp = data->info.conn_primary_port; break; case CURLINFO_LOCAL_IP: /* Return the source/local ip address of the most recent (primary) connection */ - *param_charp = data->info.localip; + *param_charp = data->info.conn_local_ip; break; case CURLINFO_LOCAL_PORT: /* Return the local port of the most recent (primary) connection */ - *param_longp = data->info.localport; + *param_longp = data->info.conn_local_port; break; case CURLINFO_CERTINFO: /* Return the a pointer to the certinfo struct. Not really an slist diff -Nru curl-7.21.2/lib/gopher.c curl-7.21.3/lib/gopher.c --- curl-7.21.2/lib/gopher.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/gopher.c 2010-12-03 10:22:50.000000000 +0100 @@ -78,6 +78,7 @@ #include "rawstr.h" #include "select.h" #include "url.h" +#include "warnless.h" #define _MPRINTF_REPLACE /* use our functions only */ #include @@ -156,7 +157,7 @@ /* We use Curl_write instead of Curl_sendf to make sure the entire buffer is sent, which could be sizeable with long selectors. */ - k = strlen(sel); + k = curlx_uztosz(strlen(sel)); for(;;) { result = Curl_write(conn, sockfd, sel, k, &amount); diff -Nru curl-7.21.2/lib/gtls.c curl-7.21.3/lib/gtls.c --- curl-7.21.2/lib/gtls.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/gtls.c 2010-12-01 19:45:49.000000000 +0100 @@ -78,6 +78,7 @@ } #endif static bool gtls_inited = FALSE; + /* * Custom push and pull callback functions used by GNU TLS to read and write * to the socket. These functions are simple wrappers to send() and recv() @@ -85,15 +86,54 @@ * We use custom functions rather than the GNU TLS defaults because it allows * us to get specific about the fourth "flags" argument, and to use arbitrary * private data with gnutls_transport_set_ptr if we wish. + * + * When these custom push and pull callbacks fail, GNU TLS checks its own + * session-specific error variable, and when not set also its own global + * errno variable, in order to take appropriate action. GNU TLS does not + * require that the transport is actually a socket. This implies that for + * Windows builds these callbacks should ideally set the session-specific + * error variable using function gnutls_transport_set_errno or as a last + * resort global errno variable using gnutls_transport_set_global_errno, + * with a transport agnostic error value. This implies that some winsock + * error translation must take place in these callbacks. */ + +#ifdef USE_WINSOCK +# define gtls_EINTR 4 +# define gtls_EIO 5 +# define gtls_EAGAIN 11 +static int gtls_mapped_sockerrno(void) +{ + switch(SOCKERRNO) { + case WSAEWOULDBLOCK: + return gtls_EAGAIN; + case WSAEINTR: + return gtls_EINTR; + default: + break; + } + return gtls_EIO; +} +#endif + static ssize_t Curl_gtls_push(void *s, const void *buf, size_t len) { - return swrite(GNUTLS_POINTER_TO_INT_CAST(s), buf, len); + ssize_t ret = swrite(GNUTLS_POINTER_TO_INT_CAST(s), buf, len); +#ifdef USE_WINSOCK + if(ret < 0) + gnutls_transport_set_global_errno(gtls_mapped_sockerrno()); +#endif + return ret; } static ssize_t Curl_gtls_pull(void *s, void *buf, size_t len) { - return sread(GNUTLS_POINTER_TO_INT_CAST(s), buf, len); + ssize_t ret = sread(GNUTLS_POINTER_TO_INT_CAST(s), buf, len); +#ifdef USE_WINSOCK + if(ret < 0) + gnutls_transport_set_global_errno(gtls_mapped_sockerrno()); +#endif + return ret; } /* Curl_gtls_init() @@ -196,7 +236,7 @@ int rc; int what; - while(1) { + for(;;) { /* check allowed time left */ timeout_ms = Curl_timeleft(conn, NULL, duringconnect); @@ -216,19 +256,18 @@ connssl->connecting_state?sockfd:CURL_SOCKET_BAD; what = Curl_socket_ready(readfd, writefd, - nonblocking?0:(int)timeout_ms); + nonblocking?0:(int)timeout_ms?1000:timeout_ms); if(what < 0) { /* fatal error */ failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO); return CURLE_SSL_CONNECT_ERROR; } else if(0 == what) { - if(nonblocking) { + if(nonblocking) return CURLE_OK; - } - else { + else if(timeout_ms) { /* timeout */ - failf(data, "SSL connection timeout"); + failf(data, "SSL connection timeout at %ld", timeout_ms); return CURLE_OPERATION_TIMEDOUT; } } @@ -241,12 +280,14 @@ connssl->connecting_state = gnutls_record_get_direction(session)? ssl_connect_2_writing:ssl_connect_2_reading; - if(nonblocking) { + if(nonblocking) return CURLE_OK; - } - } else if (rc < 0) { + } + else if (rc < 0) { failf(data, "gnutls_handshake() failed: %s", gnutls_strerror(rc)); - } else { + return CURLE_SSL_CONNECT_ERROR; + } + else { /* Reset our connect state machine */ connssl->connecting_state = ssl_connect_1; return CURLE_OK; diff -Nru curl-7.21.2/lib/hmac.c curl-7.21.3/lib/hmac.c --- curl-7.21.2/lib/hmac.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/hmac.c 2010-11-08 08:56:20.000000000 +0100 @@ -60,7 +60,7 @@ /* Create HMAC context. */ i = sizeof *ctxt + 2 * hashparams->hmac_ctxtsize + hashparams->hmac_resultlen; - ctxt = (HMAC_context *) malloc(i); + ctxt = malloc(i); if(!ctxt) return ctxt; @@ -85,9 +85,9 @@ (*hashparams->hmac_hinit)(ctxt->hmac_hashctxt2); for (i = 0; i < keylen; i++) { - b = *key ^ hmac_ipad; + b = (unsigned char)(*key ^ hmac_ipad); (*hashparams->hmac_hupdate)(ctxt->hmac_hashctxt1, &b, 1); - b = *key++ ^ hmac_opad; + b = (unsigned char)(*key++ ^ hmac_opad); (*hashparams->hmac_hupdate)(ctxt->hmac_hashctxt2, &b, 1); } diff -Nru curl-7.21.2/lib/hostares.c curl-7.21.3/lib/hostares.c --- curl-7.21.2/lib/hostares.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/hostares.c 2010-12-05 23:17:39.000000000 +0100 @@ -224,17 +224,12 @@ long timeout; struct timeval now = Curl_tvnow(); - /* now, see if there's a connect timeout or a regular timeout to - use instead of the default one */ - if(conn->data->set.connecttimeout) - timeout = conn->data->set.connecttimeout; - else if(conn->data->set.timeout) - timeout = conn->data->set.timeout; - else + timeout = Curl_timeleft(conn, &now, TRUE); + if(!timeout) timeout = CURL_TIMEOUT_RESOLVE * 1000; /* default name resolve timeout */ /* Wait for the name resolve query to complete. */ - while(1) { + for(;;) { struct timeval *tvp, tv, store; long timediff; int itimeout; @@ -265,8 +260,10 @@ timeout = -1; /* trigger the cancel below */ } else { - timediff = Curl_tvdiff(Curl_tvnow(), now); /* spent time */ + struct timeval now2 = Curl_tvnow(); + timediff = Curl_tvdiff(now2, now); /* spent time */ timeout -= timediff?timediff:1; /* always deduct at least 1 */ + now = now2; /* for next loop */ } if(timeout < 0) { /* our timeout, so we cancel the ares operation */ @@ -378,7 +375,7 @@ return Curl_ip2addr(AF_INET6, &in6, hostname, port); } - switch(data->set.ip_version) { + switch(conn->ip_version) { default: #if ARES_VERSION >= 0x010601 family = PF_UNSPEC; /* supported by c-ares since 1.6.1, so for older diff -Nru curl-7.21.2/lib/hostip4.c curl-7.21.3/lib/hostip4.c --- curl-7.21.2/lib/hostip4.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/hostip4.c 2010-11-11 15:16:21.000000000 +0100 @@ -77,9 +77,9 @@ * Curl_ipvalid() checks what CURL_IPRESOLVE_* requirements that might've * been set and returns TRUE if they are OK. */ -bool Curl_ipvalid(struct SessionHandle *data) +bool Curl_ipvalid(struct connectdata *conn) { - if(data->set.ip_version == CURL_IPRESOLVE_V6) + if(conn->ip_version == CURL_IPRESOLVE_V6) /* an ipv6 address was requested and we can't get/use one */ return FALSE; diff -Nru curl-7.21.2/lib/hostip6.c curl-7.21.3/lib/hostip6.c --- curl-7.21.2/lib/hostip6.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/hostip6.c 2010-11-11 15:16:21.000000000 +0100 @@ -112,9 +112,9 @@ * Curl_ipvalid() checks what CURL_IPRESOLVE_* requirements that might've * been set and returns TRUE if they are OK. */ -bool Curl_ipvalid(struct SessionHandle *data) +bool Curl_ipvalid(struct connectdata *conn) { - if(data->set.ip_version == CURL_IPRESOLVE_V6) { + if(conn->ip_version == CURL_IPRESOLVE_V6) { /* see if we have an IPv6 stack */ curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0); if(s == CURL_SOCKET_BAD) @@ -174,7 +174,7 @@ /* * Check if a limited name resolve has been requested. */ - switch(data->set.ip_version) { + switch(conn->ip_version) { case CURL_IPRESOLVE_V4: pf = PF_INET; break; diff -Nru curl-7.21.2/lib/hostip.c curl-7.21.3/lib/hostip.c --- curl-7.21.2/lib/hostip.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/hostip.c 2010-12-02 09:13:12.000000000 +0100 @@ -67,6 +67,7 @@ #include "strerror.h" #include "url.h" #include "inet_ntop.h" +#include "warnless.h" #define _MPRINTF_REPLACE /* use our functions only */ #include @@ -366,7 +367,7 @@ dns = dns2; dns->inuse++; /* mark entry as in-use */ - /* free the allocated entry_id again */ + /* free the allocated entry_id */ free(entry_id); return dns; @@ -421,6 +422,9 @@ /* See if its already in our dns cache */ dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len+1); + /* free the allocated entry_id again */ + free(entry_id); + /* See whether the returned entry is stale. Done before we release lock */ if( remove_entry_if_stale(data, dns) ) dns = NULL; /* the memory deallocation is being handled by the hash */ @@ -433,9 +437,6 @@ if(data->share) Curl_share_unlock(data, CURL_LOCK_DATA_DNS); - /* free the allocated entry_id again */ - free(entry_id); - if(!dns) { /* The entry was not in the cache. Resolve it to IP address */ @@ -444,7 +445,7 @@ /* Check what IP specifics the app has requested and if we can provide it. * If not, bail out. */ - if(!Curl_ipvalid(data)) + if(!Curl_ipvalid(conn)) return CURLRESOLV_ERROR; /* If Curl_getaddrinfo() returns NULL, 'respwait' might be set to a @@ -597,7 +598,7 @@ /* alarm() makes a signal get sent when the timeout fires off, and that will abort system calls */ - prev_alarm = alarm((unsigned int) (timeout/1000L)); + prev_alarm = alarm(curlx_sltoui(timeout/1000L)); /* This allows us to time-out from the name resolver, as the timeout will generate a signal and we will siglongjmp() from that here. diff -Nru curl-7.21.2/lib/hostip.h curl-7.21.3/lib/hostip.h --- curl-7.21.2/lib/hostip.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/hostip.h 2010-11-11 15:16:21.000000000 +0100 @@ -111,7 +111,7 @@ * Curl_ipvalid() checks what CURL_IPRESOLVE_* requirements that might've * been set and returns TRUE if they are OK. */ -bool Curl_ipvalid(struct SessionHandle *data); +bool Curl_ipvalid(struct connectdata *conn); /* * Curl_getaddrinfo() is the generic low-level name resolve API within this diff -Nru curl-7.21.2/lib/hostthre.c curl-7.21.3/lib/hostthre.c --- curl-7.21.2/lib/hostthre.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/hostthre.c 2010-11-11 15:16:21.000000000 +0100 @@ -518,7 +518,7 @@ /* * Check if a limited name resolve has been requested. */ - switch(data->set.ip_version) { + switch(conn->ip_version) { case CURL_IPRESOLVE_V4: pf = PF_INET; break; diff -Nru curl-7.21.2/lib/http.c curl-7.21.3/lib/http.c --- curl-7.21.2/lib/http.c 2010-10-10 23:22:27.000000000 +0200 +++ curl-7.21.3/lib/http.c 2010-12-15 14:49:10.000000000 +0100 @@ -98,6 +98,7 @@ #include "rawstr.h" #include "content_encoding.h" #include "rtsp.h" +#include "warnless.h" #define _MPRINTF_REPLACE /* use our functions only */ #include @@ -2375,19 +2376,15 @@ #endif /* CURL_DISABLE_PROXY */ if(HTTPREQ_POST_FORM == httpreq) { - /* we must build the whole darned post sequence first, so that we have - a size of the whole shebang before we start to send it */ - result = Curl_getFormData(&http->sendit, data->set.httppost, - Curl_checkheaders(data, "Content-Type:"), - &http->postsize); - if(CURLE_OK != result) { - /* Curl_getFormData() doesn't use failf() */ - failf(data, "failed creating formpost data"); - return result; - } + /* we must build the whole post sequence first, so that we have a size of + the whole transfer before we start to send it */ + result = Curl_getformdata(data, &http->sendit, data->set.httppost, + Curl_checkheaders(data, "Content-Type:"), + &http->postsize); + if(result) + return result; } - http->p_accept = Curl_checkheaders(data, "Accept:")?NULL:"Accept: */*\r\n"; if(( (HTTPREQ_POST == httpreq) || @@ -2428,27 +2425,25 @@ /* when seekerr == CURL_SEEKFUNC_CANTSEEK (can't seek to offset) */ else { curl_off_t passed=0; - do { - size_t readthisamountnow = (size_t)(data->state.resume_from - - passed); - size_t actuallyread; - - if(readthisamountnow > BUFSIZE) - readthisamountnow = BUFSIZE; - - actuallyread = data->set.fread_func(data->state.buffer, 1, - (size_t)readthisamountnow, - data->set.in); + size_t readthisamountnow = + (data->state.resume_from - passed > CURL_OFF_T_C(BUFSIZE)) ? + BUFSIZE : curlx_sotouz(data->state.resume_from - passed); + + size_t actuallyread = + data->set.fread_func(data->state.buffer, 1, readthisamountnow, + data->set.in); passed += actuallyread; - if(actuallyread != readthisamountnow) { + if((actuallyread == 0) || (actuallyread > readthisamountnow)) { + /* this checks for greater-than only to make sure that the + CURL_READFUNC_ABORT return code still aborts */ failf(data, "Could only read %" FORMAT_OFF_T " bytes from the input", passed); return CURLE_READ_ERROR; } - } while(passed != data->state.resume_from); /* loop until done */ + } while(passed < data->state.resume_from); } } diff -Nru curl-7.21.2/lib/http_chunks.c curl-7.21.3/lib/http_chunks.c --- curl-7.21.2/lib/http_chunks.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/http_chunks.c 2010-10-17 18:50:28.000000000 +0200 @@ -342,7 +342,6 @@ return CHUNKE_OUT_OF_MEMORY; conn->trailer = ptr; } - fprintf(stderr, "MOO: %c\n", *datap); conn->trailer[conn->trlPos++]=*datap; } datap++; diff -Nru curl-7.21.2/lib/http_digest.c curl-7.21.3/lib/http_digest.c --- curl-7.21.2/lib/http_digest.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/http_digest.c 2010-11-08 08:56:20.000000000 +0100 @@ -158,7 +158,7 @@ /* clear off any former leftovers and init to defaults */ Curl_digest_cleanup_one(d); - while(1) { + for(;;) { char value[MAX_VALUE_LENGTH]; char content[MAX_CONTENT_LENGTH]; diff -Nru curl-7.21.2/lib/imap.c curl-7.21.3/lib/imap.c --- curl-7.21.2/lib/imap.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/imap.c 2010-12-06 14:41:18.000000000 +0100 @@ -100,7 +100,7 @@ static CURLcode imap_done(struct connectdata *conn, CURLcode, bool premature); static CURLcode imap_connect(struct connectdata *conn, bool *done); -static CURLcode imap_disconnect(struct connectdata *conn); +static CURLcode imap_disconnect(struct connectdata *conn, bool dead_connection); static CURLcode imap_multi_statemach(struct connectdata *conn, bool *done); static int imap_getsock(struct connectdata *conn, curl_socket_t *socks, @@ -877,13 +877,13 @@ * Disconnect from an IMAP server. Cleanup protocol-specific per-connection * resources. BLOCKING. */ -static CURLcode imap_disconnect(struct connectdata *conn) +static CURLcode imap_disconnect(struct connectdata *conn, bool dead_connection) { struct imap_conn *imapc= &conn->proto.imapc; /* The IMAP session may or may not have been allocated/setup at this point! */ - if (imapc->pp.conn) + if(!dead_connection && imapc->pp.conn) (void)imap_logout(conn); /* ignore errors on the LOGOUT */ Curl_pp_disconnect(&imapc->pp); diff -Nru curl-7.21.2/lib/inet_pton.c curl-7.21.3/lib/inet_pton.c --- curl-7.21.2/lib/inet_pton.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/inet_pton.c 2010-12-01 19:45:49.000000000 +0100 @@ -218,14 +218,14 @@ * Since some memmove()'s erroneously fail to handle * overlapping regions, we'll do the shift by hand. */ - const size_t n = tp - colonp; - size_t i; + const ssize_t n = tp - colonp; + ssize_t i; if(tp == endp) return (0); for (i = 1; i <= n; i++) { - endp[- i] = colonp[n - i]; - colonp[n - i] = 0; + *(endp - i) = *(colonp + n - i); + *(colonp + n - i) = 0; } tp = endp; } diff -Nru curl-7.21.2/lib/krb4.c curl-7.21.3/lib/krb4.c --- curl-7.21.2/lib/krb4.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/krb4.c 2010-11-14 12:47:26.000000000 +0100 @@ -7,7 +7,7 @@ * * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). - * Copyright (c) 2004 - 2009 Daniel Stenberg + * Copyright (c) 2004 - 2010 Daniel Stenberg * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -106,7 +106,7 @@ krb4_check_prot(void *app_data, int level) { app_data = NULL; /* prevent compiler warning */ - if(level == prot_confidential) + if(level == PROT_CONFIDENTIAL) return -1; return 0; } @@ -119,7 +119,7 @@ int e; struct krb4_data *d = app_data; - if(level == prot_safe) + if(level == PROT_SAFE) e = krb_rd_safe(buf, len, &d->key, (struct sockaddr_in *)REMOTE_ADDR, (struct sockaddr_in *)LOCAL_ADDR, &m); @@ -154,14 +154,14 @@ *to = malloc(length + 31); if(!*to) return -1; - if(level == prot_safe) + if(level == PROT_SAFE) /* NOTE that the void* cast is safe, krb_mk_safe/priv don't modify the * input buffer */ return krb_mk_safe((void*)from, *to, length, &d->key, (struct sockaddr_in *)LOCAL_ADDR, (struct sockaddr_in *)REMOTE_ADDR); - else if(level == prot_private) + else if(level == PROT_PRIVATE) return krb_mk_priv((void*)from, *to, length, d->schedule, &d->key, (struct sockaddr_in *)LOCAL_ADDR, (struct sockaddr_in *)REMOTE_ADDR); @@ -315,6 +315,15 @@ krb4_decode }; +static enum protection_level +krb4_set_command_prot(struct connectdata *conn, enum protection_level level) +{ + enum protection_level old = conn->command_prot; + DEBUGASSERT(level > PROT_NONE && level < PROT_LAST); + conn->command_prot = level; + return old; +} + CURLcode Curl_krb_kauth(struct connectdata *conn) { des_cblock key; @@ -325,11 +334,11 @@ char passwd[100]; size_t tmp; ssize_t nread; - int save; + enum protection_level save; CURLcode result; unsigned char *ptr; - save = Curl_set_command_prot(conn, prot_private); + save = krb4_set_command_prot(conn, PROT_PRIVATE); result = Curl_ftpsendf(conn, "SITE KAUTH %s", conn->user); @@ -341,14 +350,14 @@ return result; if(conn->data->state.buffer[0] != '3'){ - Curl_set_command_prot(conn, save); + krb4_set_command_prot(conn, save); return CURLE_FTP_WEIRD_SERVER_REPLY; } p = strstr(conn->data->state.buffer, "T="); if(!p) { Curl_failf(conn->data, "Bad reply from server"); - Curl_set_command_prot(conn, save); + krb4_set_command_prot(conn, save); return CURLE_FTP_WEIRD_SERVER_REPLY; } @@ -360,7 +369,7 @@ } if(!tmp || !ptr) { Curl_failf(conn->data, "Failed to decode base64 in reply"); - Curl_set_command_prot(conn, save); + krb4_set_command_prot(conn, save); return CURLE_FTP_WEIRD_SERVER_REPLY; } memcpy((char *)tkt.dat, ptr, tmp); @@ -371,7 +380,7 @@ p = strstr(conn->data->state.buffer, "P="); if(!p) { Curl_failf(conn->data, "Bad reply from server"); - Curl_set_command_prot(conn, save); + krb4_set_command_prot(conn, save); return CURLE_FTP_WEIRD_SERVER_REPLY; } name = p + 2; @@ -400,7 +409,7 @@ if(Curl_base64_encode(conn->data, (char *)tktcopy.dat, tktcopy.length, &p) < 1) { failf(conn->data, "Out of memory base64-encoding."); - Curl_set_command_prot(conn, save); + krb4_set_command_prot(conn, save); return CURLE_OUT_OF_MEMORY; } memset (tktcopy.dat, 0, tktcopy.length); @@ -413,7 +422,7 @@ result = Curl_GetFTPResponse(&nread, conn, NULL); if(result) return result; - Curl_set_command_prot(conn, save); + krb4_set_command_prot(conn, save); return CURLE_OK; } diff -Nru curl-7.21.2/lib/krb4.h curl-7.21.3/lib/krb4.h --- curl-7.21.2/lib/krb4.h 2010-10-01 22:48:39.000000000 +0200 +++ curl-7.21.3/lib/krb4.h 2010-11-14 12:47:26.000000000 +0100 @@ -47,24 +47,9 @@ #endif CURLcode Curl_krb_kauth(struct connectdata *conn); -int Curl_sec_fprintf (struct connectdata *, FILE *, const char *, ...); -int Curl_sec_getc (struct connectdata *conn, FILE *); -int Curl_sec_putc (struct connectdata *conn, int, FILE *); -int Curl_sec_read_msg (struct connectdata *conn, char *, int); - -int Curl_sec_vfprintf(struct connectdata *, FILE *, const char *, va_list); -int Curl_sec_fprintf2(struct connectdata *conn, FILE *f, const char *fmt, ...); -int Curl_sec_vfprintf2(struct connectdata *conn, FILE *, const char *, va_list); - +int Curl_sec_read_msg (struct connectdata *conn, char *, enum protection_level); void Curl_sec_end (struct connectdata *); CURLcode Curl_sec_login (struct connectdata *); -void Curl_sec_prot (int, char **); int Curl_sec_request_prot (struct connectdata *conn, const char *level); -int Curl_sec_set_protection_level(struct connectdata *conn); -void Curl_sec_status (void); - -enum protection_level Curl_set_command_prot(struct connectdata *, - enum protection_level); - #endif diff -Nru curl-7.21.2/lib/krb5.c curl-7.21.3/lib/krb5.c --- curl-7.21.2/lib/krb5.c 2010-10-10 23:22:27.000000000 +0200 +++ curl-7.21.3/lib/krb5.c 2010-11-14 12:47:26.000000000 +0100 @@ -88,7 +88,7 @@ krb5_check_prot(void *app_data, int level) { (void)app_data; /* unused */ - if(level == prot_confidential) + if(level == PROT_CONFIDENTIAL) return -1; return 0; } @@ -150,7 +150,7 @@ dec.value = (void*)from; dec.length = length; maj = gss_seal(&min, *context, - level == prot_private, + level == PROT_PRIVATE, GSS_C_QOP_DEFAULT, &dec, &state, &enc); @@ -259,8 +259,8 @@ gssresp = NULL; } - if(maj != GSS_S_COMPLETE && maj != GSS_S_CONTINUE_NEEDED) { - Curl_infof(data, "Error creating security context"); + if(GSS_ERROR(maj)) { + Curl_infof(data, "Error creating security context\n"); ret = AUTH_ERROR; break; } @@ -268,7 +268,7 @@ if(output_buffer.length != 0) { if(Curl_base64_encode(data, (char *)output_buffer.value, output_buffer.length, &p) < 1) { - Curl_infof(data, "Out of memory base64-encoding"); + Curl_infof(data, "Out of memory base64-encoding\n"); ret = AUTH_CONTINUE; break; } @@ -299,7 +299,7 @@ _gssresp.length = Curl_base64_decode(p + 5, (unsigned char **) &_gssresp.value); if(_gssresp.length < 1) { - Curl_failf(data, "Out of memory base64-encoding"); + Curl_failf(data, "Out of memory base64-encoding\n"); ret = AUTH_CONTINUE; break; } diff -Nru curl-7.21.2/lib/ldap.c curl-7.21.3/lib/ldap.c --- curl-7.21.2/lib/ldap.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/ldap.c 2010-12-01 19:45:49.000000000 +0100 @@ -473,7 +473,7 @@ if(do_trace == -1) { const char *env = getenv("CURL_TRACE"); - do_trace = (env && atoi(env) > 0); + do_trace = (env && strtol(env, NULL, 10) > 0); } if(!do_trace) return; diff -Nru curl-7.21.2/lib/libcurl.plist curl-7.21.3/lib/libcurl.plist --- curl-7.21.2/lib/libcurl.plist 2010-10-13 00:04:32.000000000 +0200 +++ curl-7.21.3/lib/libcurl.plist 2010-12-15 15:08:04.000000000 +0100 @@ -15,7 +15,7 @@ com.libcurl.libcurl CFBundleVersion - 7.21.2 + 7.21.3 CFBundleName libcurl @@ -27,9 +27,9 @@ ???? CFBundleShortVersionString - libcurl 7.21.2 + libcurl 7.21.3 CFBundleGetInfoString - libcurl.plist 7.21.2 + libcurl.plist 7.21.3 \ Brak znaku nowej linii na koÅ„cu pliku diff -Nru curl-7.21.2/lib/Makefile.am curl-7.21.3/lib/Makefile.am --- curl-7.21.2/lib/Makefile.am 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/Makefile.am 2010-12-03 10:22:50.000000000 +0100 @@ -30,15 +30,15 @@ CMAKE_DIST = CMakeLists.txt curl_config.h.cmake -EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 Makefile.riscos $(DSP) \ +EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 $(DSP) \ vc6libcurl.dsw config-win32.h config-win32ce.h config-riscos.h \ - config-mac.h curl_config.h.in makefile.dj config.dos libcurl.plist \ + config-mac.h curl_config.h.in makefile.dj config-dos.h libcurl.plist \ libcurl.rc config-amigaos.h amigaos.c amigaos.h makefile.amiga \ Makefile.netware nwlib.c nwos.c libcurl.imp msvcproj.head msvcproj.foot \ config-win32ce.h config-os400.h setup-os400.h config-symbian.h \ Makefile.Watcom config-tpf.h $(DOCS) $(VCPROJ) mk-ca-bundle.pl \ mk-ca-bundle.vbs firefox-db2pem.sh $(CMAKE_DIST) config-vxworks.h \ - Makefile.vxworks + Makefile.vxworks config-vms.h CLEANFILES = $(DSP) $(VCPROJ) diff -Nru curl-7.21.2/lib/makefile.dj curl-7.21.3/lib/makefile.dj --- curl-7.21.2/lib/makefile.dj 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/makefile.dj 2010-12-03 10:22:50.000000000 +0100 @@ -21,7 +21,7 @@ $(CURL_LIB): $(OBJECTS) ar rs $@ $? -curl_config.h: config.dos +curl_config.h: config-dos.h $(COPY) $^ $@ # clean generated files diff -Nru curl-7.21.2/lib/Makefile.in curl-7.21.3/lib/Makefile.in --- curl-7.21.2/lib/Makefile.in 2010-10-01 22:49:18.000000000 +0200 +++ curl-7.21.3/lib/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -325,15 +325,15 @@ README.curl_off_t README.pingpong CMAKE_DIST = CMakeLists.txt curl_config.h.cmake -EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 Makefile.riscos $(DSP) \ +EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 $(DSP) \ vc6libcurl.dsw config-win32.h config-win32ce.h config-riscos.h \ - config-mac.h curl_config.h.in makefile.dj config.dos libcurl.plist \ + config-mac.h curl_config.h.in makefile.dj config-dos.h libcurl.plist \ libcurl.rc config-amigaos.h amigaos.c amigaos.h makefile.amiga \ Makefile.netware nwlib.c nwos.c libcurl.imp msvcproj.head msvcproj.foot \ config-win32ce.h config-os400.h setup-os400.h config-symbian.h \ Makefile.Watcom config-tpf.h $(DOCS) $(VCPROJ) mk-ca-bundle.pl \ mk-ca-bundle.vbs firefox-db2pem.sh $(CMAKE_DIST) config-vxworks.h \ - Makefile.vxworks + Makefile.vxworks config-vms.h CLEANFILES = $(DSP) $(VCPROJ) lib_LTLIBRARIES = libcurl.la diff -Nru curl-7.21.2/lib/Makefile.m32 curl-7.21.3/lib/Makefile.m32 --- curl-7.21.2/lib/Makefile.m32 2010-10-12 22:56:21.000000000 +0200 +++ curl-7.21.3/lib/Makefile.m32 2010-12-05 23:04:11.000000000 +0100 @@ -20,7 +20,7 @@ endif # Edit the path below to point to the base of your OpenSSL package. ifndef OPENSSL_PATH -OPENSSL_PATH = ../../openssl-0.9.8o +OPENSSL_PATH = ../../openssl-0.9.8q endif # Edit the path below to point to the base of your LibSSH2 package. ifndef LIBSSH2_PATH diff -Nru curl-7.21.2/lib/Makefile.netware curl-7.21.3/lib/Makefile.netware --- curl-7.21.2/lib/Makefile.netware 2010-10-12 22:56:21.000000000 +0200 +++ curl-7.21.3/lib/Makefile.netware 2010-12-05 23:04:11.000000000 +0100 @@ -19,7 +19,7 @@ # Edit the path below to point to the base of your OpenSSL package. ifndef OPENSSL_PATH -OPENSSL_PATH = ../../openssl-0.9.8o +OPENSSL_PATH = ../../openssl-0.9.8q endif # Edit the path below to point to the base of your LibSSH2 package. @@ -424,6 +424,7 @@ @echo $(DL)#define SEND_TYPE_ARG3 int$(DL) >> $@ @echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@ @echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@ + @echo $(DL)#define SIZEOF_SIZE_T 4$(DL) >> $@ @echo $(DL)#define pressanykey PressAnyKeyToContinue$(DL) >> $@ else @echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@ @@ -459,6 +460,7 @@ @echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@ @echo $(DL)#define SEND_TYPE_RETV ssize_t$(DL) >> $@ @echo $(DL)#define SIZEOF_OFF_T 8$(DL) >> $@ + @echo $(DL)#define SIZEOF_SIZE_T 8$(DL) >> $@ @echo $(DL)#define _LARGEFILE 1$(DL) >> $@ ifdef ENABLE_IPV6 @echo $(DL)#define ENABLE_IPV6 1$(DL) >> $@ diff -Nru curl-7.21.2/lib/Makefile.riscos curl-7.21.3/lib/Makefile.riscos --- curl-7.21.2/lib/Makefile.riscos 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/Makefile.riscos 1970-01-01 01:00:00.000000000 +0100 @@ -1,232 +0,0 @@ -# Makefile for project libcurl - -# Project objects: -objs = o.base64 o.connect o.cookie o.dict \ - o.dllinit o.easy o.escape o.file \ - o.formdata o.ftp o.getenv o.gopher \ - o.getinfo o.getpass o.hostip \ - o.hostip4 o.hostsyn o.http \ - o.http_chunks o.inet_ntop o.inet_pton o.if2ip o.krb4 o.ldap \ - o.curl_fnmatch o.fileinfo o.ftplistparser o.wildcard \ - o.memdebug o.mprintf o.netrc o.parsedate o.progress \ - o.security o.select o.sendf o.speedcheck o.ssluse \ - o.strequal o.strtok o.telnet o.timeval \ - o.transfer o.url o.version o.strtoofft o.sslgen o.gtls \ - o.rawstr o.curl_addrinfo o.slist o.nonblock o.curl_rand \ - o.curl_memrchr o.imap o.pop3 o.smtp o.pingpong o.rtsp \ - o.curl_threads o.warnless o.hmac o.md5 o.curl_rtmp \ - o.openldap o.polarssl o.md4 o.curl_gethostname - - -# Compile options: -linkopts = -o libcurl -compileropts = -mpoke-function-name -IUtilLib: -mthrowback - -# Project target: -libcurl: $(objs) - makealf $(linkopts) $(objs) - -# Static dependancies: -o.base64: c.base64 - gcc $(compileropts) -c -o base64.o c.base64 - -o.connect: c.connect - gcc $(compileropts) -c -o connect.o c.connect - -o.cookie: c.cookie - gcc $(compileropts) -c -o cookie.o c.cookie - -o.curl_addrinfo: c.curl_addrinfo - gcc $(compileropts) -c -o curl_addrinfo.o c.curl_addrinfo - -o.curl_gethostname: c.curl_gethostname - gcc $(compileropts) -c -o curl_gethostname.o c.curl_gethostname - -o.curl_memrchr: c.curl_memrchr - gcc $(compileropts) -c -o curl_memrchr.o c.curl_memrchr - -o.curl_rand: c.curl_rand - gcc $(compileropts) -c -o curl_rand.o c.curl_rand - -o.curl_rtmp: c.curl_rtmp - gcc $(compileropts) -c -o curl_rtmp.o c.curl_rtmp - -o.curl_threads: c.curl_threads - gcc $(compileropts) -c -o curl_threads.o c.curl_threads - -o.dict: c.dict - gcc $(compileropts) -c -o dict.o c.dict - -o.dllinit: c.dllinit - gcc $(compileropts) -c -o dllinit.o c.dllinit - -o.easy: c.easy - gcc $(compileropts) -c -o easy.o c.easy - -o.escape: c.escape - gcc $(compileropts) -c -o escape.o c.escape - -o.file: c.file - gcc $(compileropts) -c -o file.o c.file - -o.formdata: c.formdata - gcc $(compileropts) -c -o formdata.o c.formdata - -o.ftp: c.ftp - gcc $(compileropts) -c -o ftp.o c.ftp - -o.getenv: c.getenv - gcc $(compileropts) -c -o getenv.o c.getenv - -o.getinfo: c.getinfo - gcc $(compileropts) -c -o getinfo.o c.getinfo - -o.getpass: c.getpass - gcc $(compileropts) -c -o getpass.o c.getpass - -o.gopher: c.gopher - gcc $(compileropts) -c -o gopher.o c.gopher - -o.hmac: c.hmac - gcc $(compileropts) -c -o hmac.o c.hmac - -o.hostip: c.hostip - gcc $(compileropts) -c -o hostip.o c.hostip - -o.hostip4: c.hostip4 - gcc $(compileropts) -c -o hostip4.o c.hostip4 - -o.hostsyn: c.hostsyn - gcc $(compileropts) -c -o hostsyn.o c.hostsyn - -o.http: c.http - gcc $(compileropts) -c -o http.o c.http - -o.http_chunks: c.http_chunks - gcc $(compileropts) -c -o http_chunks.o c.http_chunks - -o.if2ip: c.if2ip - gcc $(compileropts) -c -o if2ip.o c.if2ip - -o.imap: c.imap - gcc $(compileropts) -c -o imap.o c.imap - -o.inet_ntop: c.inet_ntop - gcc $(compileropts) -c -o inet_ntop.o c.inet_ntop - -o.inet_pton: c.inet_pton - gcc $(compileropts) -c -o inet_pton.o c.inet_pton - -o.krb4: c.krb4 - gcc $(compileropts) -c -o krb4.o c.krb4 - -o.ldap: c.ldap - gcc $(compileropts) -IOpenLDAP: -c -o ldap.o c.ldap - -o.md4: c.md4 - gcc $(compileropts) -c -o md4.o c.md4 - -o.md5: c.md5 - gcc $(compileropts) -c -o md5.o c.md5 - -o.memdebug: c.memdebug - gcc $(compileropts) -c -o memdebug.o c.memdebug - -o.mprintf: c.mprintf - gcc $(compileropts) -c -o mprintf.o c.mprintf - -o.netrc: c.netrc - gcc $(compileropts) -c -o netrc.o c.netrc - -o.openldap: c.openldap - gcc $(compileropts) -c -o openldap.o c.openldap - -o.parsedate: c.parsedate - gcc $(compileropts) -c -o parsedate.o c.parsedate - -o.pingpong: c.pingpong - gcc $(compileropts) -c -o pingpong.o c.pingpong - -o.polarssl: c.polarssl - gcc $(compileropts) -c -o polarssl.o c.polarssl - -o.pop3: c.pop3 - gcc $(compileropts) -c -o pop3.o c.pop3 - -o.progress: c.progress - gcc $(compileropts) -c -o progress.o c.progress - -o.rtsp: c.rtsp - gcc $(compileropts) -c -o rtsp.o c.rtsp - -o.security: c.security - gcc $(compileropts) -c -o security.o c.security - -o.select: c.select - gcc $(compileropts) -c -o select.o c.select - -o.sendf: c.sendf - gcc $(compileropts) -c -o sendf.o c.sendf - -o.slist: c.slist - gcc $(compileropts) -c -o slist.o c.slist - -o.smtp: c.smtp - gcc $(compileropts) -c -o smtp.o c.smtp - -o.speedcheck: c.speedcheck - gcc $(compileropts) -c -o speedcheck.o c.speedcheck - -o.gtls: c.gtls - gcc $(compileropts) -c -o gtls.o c.gtls - -o.sslgen: c.sslgen - gcc $(compileropts) -c -o sslgen.o c.sslgen - -o.ssluse: c.ssluse - gcc $(compileropts) -c -o ssluse.o c.ssluse - -o.nonblock: c.nonblock - gcc $(compileropts) -c -o nonblock.o c.nonblock - -o.rawstr: c.rawstr - gcc $(compileropts) -c -o rawstr.o c.rawstr - -o.strequal: c.strequal - gcc $(compileropts) -c -o strequal.o c.strequal - -o.strtok: c.strtok - gcc $(compileropts) -c -o strtok.o c.strtok - -o.strtoofft: c.strtoofft - gcc $(compileropts) -c -o strtoofft.o c.strtoofft - -o.telnet: c.telnet - gcc $(compileropts) -c -o telnet.o c.telnet - -o.timeval: c.timeval - gcc $(compileropts) -c -o timeval.o c.timeval - -o.transfer: c.transfer - gcc $(compileropts) -c -o transfer.o c.transfer - -o.url: c.url - gcc $(compileropts) -c -o url.o c.url - -o.version: c.version - gcc $(compileropts) -c -o version.o c.version - -o.warnless: c.warnless - gcc $(compileropts) -c -o warnless.o c.warnless - -o.curl_fnmatch: c.curl_fnmatch - gcc $(compileropts) -c -o curl_fnmatch.o c.curl_fnmatch - -o.fileinfo: c.fileinfo - gcc $(compileropts) -c -o fileinfo.o c.fileinfo - -o.ftplistparser: c.ftplistparser - gcc $(compileropts) -c -o ftplistparser.o c.ftplistparser - -o.wildcard: c.wildcard - gcc $(compileropts) -c -o wildcard.o c.wildcard diff -Nru curl-7.21.2/lib/Makefile.Watcom curl-7.21.3/lib/Makefile.Watcom --- curl-7.21.2/lib/Makefile.Watcom 2010-10-12 22:56:21.000000000 +0200 +++ curl-7.21.3/lib/Makefile.Watcom 2010-12-05 23:04:11.000000000 +0100 @@ -5,9 +5,6 @@ !ifndef %watcom !error WATCOM environment variable not set! -!else -SYS_INCL = -I$(%watcom)\h\nt -I$(%watcom)\h -SYS_LIBS = $(%watcom)\lib386\nt;$(%watcom)\lib386 !endif !ifdef %libname @@ -33,18 +30,30 @@ ! endif !endif -!if $(__VERSION__) < 1250 -RM = del /q /f 2>NUL -!else -RM = rm -f -!endif +!ifdef __LINUX__ +DS = / +CP = cp +MD = mkdir -p +RD = rmdir -p +RM = rm -f +!else +DS = $(X)\$(X) +CP = copy 2>NUL MD = mkdir RD = rmdir /q /s 2>NUL -CP = copy +!if $(__VERSION__) < 1250 +RM = del /q /f 2>NUL +!else +RM = rm -f +!endif +!endif + +SYS_INCL = -I$(%watcom)$(DS)h$(DS)nt -I$(%watcom)$(DS)h +SYS_LIBS = $(%watcom)$(DS)lib386$(DS)nt;$(%watcom)$(DS)lib386 CFLAGS = -3r -mf -hc -zff -zgf -zq -zm -zc -s -fr=con -w2 -fpi -oilrtfm & -wcd=201 -bt=nt -d+ -dWIN32 -dCURL_WANTS_CA_BUNDLE_ENV & - -dBUILDING_LIBCURL -dHAVE_SPNEGO=1 -I. -I..\include $(SYS_INCL) + -dBUILDING_LIBCURL -dHAVE_SPNEGO=1 -I. -I..$(DS)include $(SYS_INCL) !ifdef %debug DEBUG = -dDEBUG=1 -dDEBUGBUILD @@ -67,31 +76,31 @@ !ifdef %zlib_root ZLIB_ROOT = $(%zlib_root) !else -ZLIB_ROOT = ..\..\zlib-1.2.5 +ZLIB_ROOT = ..$(DS)..$(DS)zlib-1.2.5 !endif !ifdef %libssh2_root LIBSSH2_ROOT = $(%libssh2_root) !else -LIBSSH2_ROOT = ..\..\libssh2-1.2.7 +LIBSSH2_ROOT = ..$(DS)..$(DS)libssh2-1.2.7 !endif !ifdef %librtmp_root LIBRTMP_ROOT = $(%librtmp_root) !else -LIBRTMP_ROOT = ..\..\librtmp-2.3 +LIBRTMP_ROOT = ..$(DS)..$(DS)rtmpdump-2.3 !endif !ifdef %openssl_root OPENSSL_ROOT = $(%openssl_root) !else -OPENSSL_ROOT = ..\..\openssl-0.9.8o +OPENSSL_ROOT = ..$(DS)..$(DS)openssl-0.9.8q !endif !ifdef %ares_root ARES_ROOT = $(%ares_root) !else -ARES_ROOT = ..\ares +ARES_ROOT = ..$(DS)ares !endif !ifdef %use_zlib @@ -103,11 +112,11 @@ !endif !ifdef %use_ssh2 -CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H -I$(LIBSSH2_ROOT)\include -I$(LIBSSH2_ROOT)\win32 +CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H -I$(LIBSSH2_ROOT)$(DS)include -I$(LIBSSH2_ROOT)$(DS)win32 !endif !ifdef %use_ssl -CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I$(OPENSSL_ROOT)\inc32 +CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I$(OPENSSL_ROOT)$(DS)inc32 !endif !ifdef %use_ares @@ -115,12 +124,12 @@ !endif !ifdef %use_watt32 -CFLAGS += -dUSE_WATT32 -I$(%watt_root)\inc +CFLAGS += -dUSE_WATT32 -I$(%watt_root)$(DS)inc !endif OBJ_BASE = WC_Win32.obj -LINK_ARG = $(OBJ_BASE)\dyn\wlink.arg -LIB_ARG = $(OBJ_BASE)\stat\wlib.arg +LINK_ARG = $(OBJ_BASE)$(DS)dyn$(DS)wlink.arg +LIB_ARG = $(OBJ_BASE)$(DS)stat$(DS)wlib.arg # In order to process Makefile.inc wmake must be called with -u switch! !ifndef %MAKEFLAGS @@ -130,19 +139,24 @@ !endif OBJS = $(CSOURCES:.c=.obj) +!ifdef __LINUX__ +OBJS = $OBJ_DIR/$(OBJS: = $OBJ_DIR/) + +!else OBJS = $OBJ_DIR\$(OBJS: = $OBJ_DIR\) +!endif # # Use $(OBJS) as a template to generate $(OBJS_STAT) and $(OBJS_DYN). # -OBJ_DIR = $(OBJ_BASE)\stat +OBJ_DIR = $(OBJ_BASE)$(DS)stat OBJS_STAT = $+ $(OBJS) $- -OBJ_DIR = $(OBJ_BASE)\dyn +OBJ_DIR = $(OBJ_BASE)$(DS)dyn OBJS_DYN = $+ $(OBJS) $- -CURLBUILDH = ..\include\curl\curlbuild.h -RESOURCE = $(OBJ_BASE)\dyn\libcurl.res +CURLBUILDH = ..$(DS)include$(DS)curl$(DS)curlbuild.h +RESOURCE = $(OBJ_BASE)$(DS)dyn$(DS)libcurl.res all: $(CURLBUILDH) $(OBJ_BASE) $(TARGETS) .SYMBOLIC @echo Welcome to libcurl @@ -154,14 +168,14 @@ vclean distclean: clean .SYMBOLIC -$(RM) $(TARGETS) $(LIBNAME).map $(LIBNAME).sym - -$(RD) $(OBJ_BASE)\stat - -$(RD) $(OBJ_BASE)\dyn + -$(RD) $(OBJ_BASE)$(DS)stat + -$(RD) $(OBJ_BASE)$(DS)dyn -$(RD) $(OBJ_BASE) $(OBJ_BASE): -$(MD) $^@ - -$(MD) $^@\stat - -$(MD) $^@\dyn + -$(MD) $^@$(DS)stat + -$(MD) $^@$(DS)dyn $(CURLBUILDH): .EXISTSONLY $(CP) $^@.dist $^@ @@ -174,14 +188,14 @@ .ERASE $(RESOURCE): libcurl.rc - $(RC) $(DEBUG) -q -r -zm -I..\include $(SYS_INCL) $[@ -fo=$^@ + $(RC) $(DEBUG) -q -r -zm -bt=nt -I..$(DS)include $(SYS_INCL) $[@ -fo=$^@ .ERASE -.c{$(OBJ_BASE)\dyn}.obj: +.c{$(OBJ_BASE)$(DS)dyn}.obj: $(CC) $(CFLAGS) -bd -br $[@ -fo=$^@ .ERASE -.c{$(OBJ_BASE)\stat}.obj: +.c{$(OBJ_BASE)$(DS)stat}.obj: $(CC) $(CFLAGS) -DCURL_STATICLIB $[@ -fo=$^@ $(LINK_ARG): $(__MAKEFILES__) @@ -196,24 +210,24 @@ @%append $^@ res=$(RESOURCE) libpath $(SYS_LIBS) @%append $^@ library wldap32.lib !ifdef %use_watt32 - @%append $^@ library $(%watt_root)\lib\wattcpw_imp.lib + @%append $^@ library $(%watt_root)$(DS)lib$(DS)wattcpw_imp.lib !else @%append $^@ library ws2_32.lib !endif !ifdef %use_zlib - @%append $^@ library $(ZLIB_ROOT)\zlib.lib + @%append $^@ library $(ZLIB_ROOT)$(DS)zlib.lib !endif !ifdef %use_rtmp - @%append $^@ library $(LIBRTMP_ROOT)\librtmp\librtmp.lib + @%append $^@ library $(LIBRTMP_ROOT)$(DS)librtmp$(DS)librtmp.lib !endif !ifdef %use_ssh2 - @%append $^@ library $(LIBSSH2_ROOT)\win32\libssh2.lib + @%append $^@ library $(LIBSSH2_ROOT)$(DS)win32$(DS)libssh2.lib !endif !ifdef %use_ssl - @%append $^@ library $(OPENSSL_ROOT)\out32\libeay32.lib, $(OPENSSL_ROOT)\out32\ssleay32.lib + @%append $^@ library $(OPENSSL_ROOT)$(DS)out32$(DS)libeay32.lib, $(OPENSSL_ROOT)$(DS)out32$(DS)ssleay32.lib !endif !ifdef %use_ares - @%append $^@ library $(ARES_ROOT)\cares.lib + @%append $^@ library $(ARES_ROOT)$(DS)cares.lib !endif $(LIB_ARG): $(__MAKEFILES__) diff -Nru curl-7.21.2/lib/multi.c curl-7.21.3/lib/multi.c --- curl-7.21.2/lib/multi.c 2010-10-01 22:48:39.000000000 +0200 +++ curl-7.21.3/lib/multi.c 2010-12-15 10:04:43.000000000 +0100 @@ -41,6 +41,7 @@ #include "sendf.h" #include "timeval.h" #include "http.h" +#include "warnless.h" #define _MPRINTF_REPLACE /* use our functions only */ #include @@ -67,24 +68,25 @@ well! */ typedef enum { - CURLM_STATE_INIT, /* start in this state */ - CURLM_STATE_CONNECT, /* resolve/connect has been sent off */ - CURLM_STATE_WAITRESOLVE, /* awaiting the resolve to finalize */ - CURLM_STATE_WAITCONNECT, /* awaiting the connect to finalize */ - CURLM_STATE_WAITPROXYCONNECT, /* awaiting proxy CONNECT to finalize */ - CURLM_STATE_PROTOCONNECT, /* completing the protocol-specific connect phase */ - CURLM_STATE_WAITDO, /* wait for our turn to send the request */ - CURLM_STATE_DO, /* start send off the request (part 1) */ - CURLM_STATE_DOING, /* sending off the request (part 1) */ - CURLM_STATE_DO_MORE, /* send off the request (part 2) */ - CURLM_STATE_DO_DONE, /* done sending off request */ - CURLM_STATE_WAITPERFORM, /* wait for our turn to read the response */ - CURLM_STATE_PERFORM, /* transfer data */ - CURLM_STATE_TOOFAST, /* wait because limit-rate exceeded */ - CURLM_STATE_DONE, /* post data transfer operation */ - CURLM_STATE_COMPLETED, /* operation complete */ - CURLM_STATE_MSGSENT, /* the operation complete message is sent */ - CURLM_STATE_LAST /* not a true state, never use this */ + CURLM_STATE_INIT, /* 0 - start in this state */ + CURLM_STATE_CONNECT, /* 1 - resolve/connect has been sent off */ + CURLM_STATE_WAITRESOLVE, /* 2 - awaiting the resolve to finalize */ + CURLM_STATE_WAITCONNECT, /* 3 - awaiting the connect to finalize */ + CURLM_STATE_WAITPROXYCONNECT, /* 4 - awaiting proxy CONNECT to finalize */ + CURLM_STATE_PROTOCONNECT, /* 5 - completing the protocol-specific connect + phase */ + CURLM_STATE_WAITDO, /* 6 - wait for our turn to send the request */ + CURLM_STATE_DO, /* 7 - start send off the request (part 1) */ + CURLM_STATE_DOING, /* 8 - sending off the request (part 1) */ + CURLM_STATE_DO_MORE, /* 9 - send off the request (part 2) */ + CURLM_STATE_DO_DONE, /* 10 - done sending off request */ + CURLM_STATE_WAITPERFORM, /* 11 - wait for our turn to read the response */ + CURLM_STATE_PERFORM, /* 12 - transfer data */ + CURLM_STATE_TOOFAST, /* 13 - wait because limit-rate exceeded */ + CURLM_STATE_DONE, /* 14 - post data transfer operation */ + CURLM_STATE_COMPLETED, /* 15 - operation complete */ + CURLM_STATE_MSGSENT, /* 16 - the operation complete message is sent */ + CURLM_STATE_LAST /* 17 - not a true state, never use this */ } CURLMstate; /* we support N sockets per easy handle. Set the corresponding bit to what @@ -976,12 +978,15 @@ /* Make sure we set the connection's current owner */ easy->easy_conn->data = data; - if(easy->easy_conn && (easy->state >= CURLM_STATE_CONNECT)) { - /* we need to wait for the connect state as only then is the - start time stored */ + if(easy->easy_conn && + (easy->state >= CURLM_STATE_CONNECT) && + (easy->state < CURLM_STATE_COMPLETED)) { + /* we need to wait for the connect state as only then is the start time + stored, but we must not check already completed handles */ timeout_ms = Curl_timeleft(easy->easy_conn, &now, - easy->state <= CURLM_STATE_WAITDO); + (easy->state <= CURLM_STATE_WAITDO)? + TRUE:FALSE); if(timeout_ms < 0) { /* Handle timed out */ @@ -1632,7 +1637,8 @@ } if(disconnect_conn) { - Curl_disconnect(easy->easy_conn); /* disconnect properly */ + /* disconnect properly */ + Curl_disconnect(easy->easy_conn, /* dead_connection */ FALSE); /* This is where we make sure that the easy_conn pointer is reset. We don't have to do this in every case block above where a @@ -1757,7 +1763,7 @@ for(i=0; i< multi->connc->num; i++) { if(multi->connc->connects[i] && multi->connc->connects[i]->protocol & PROT_CLOSEACTION) { - Curl_disconnect(multi->connc->connects[i]); + Curl_disconnect(multi->connc->connects[i], /* dead_connection */ FALSE); multi->connc->connects[i] = NULL; } } @@ -1836,7 +1842,7 @@ /* remove the extracted entry */ Curl_llist_remove(multi->msglist, e, NULL); - *msgs_in_queue = (int)Curl_llist_count(multi->msglist); + *msgs_in_queue = curlx_uztosi(Curl_llist_count(multi->msglist)); return &msg->extmsg; } @@ -2139,7 +2145,7 @@ now.tv_usec += 40000; /* compensate for bad precision timers that might've triggered too early */ - if(now.tv_usec > 1000000) { + if(now.tv_usec >= 1000000) { now.tv_sec++; now.tv_usec -= 1000000; } @@ -2566,15 +2572,12 @@ } else { struct timeval set; - int rest; set = Curl_tvnow(); set.tv_sec += milli/1000; set.tv_usec += (milli%1000)*1000; - rest = (int)(set.tv_usec - 1000000); - if(rest > 0) { - /* bigger than a full microsec */ + if(set.tv_usec >= 1000000) { set.tv_sec++; set.tv_usec -= 1000000; } @@ -2666,7 +2669,7 @@ data->state.shared_conn = multi; else { /* out of memory - so much for graceful shutdown */ - Curl_disconnect(conn); + Curl_disconnect(conn, /* dead_connection */ FALSE); multi->connc->connects[i] = NULL; } } diff -Nru curl-7.21.2/lib/openldap.c curl-7.21.3/lib/openldap.c --- curl-7.21.2/lib/openldap.c 2010-09-18 23:18:00.000000000 +0200 +++ curl-7.21.3/lib/openldap.c 2010-12-06 14:41:18.000000000 +0100 @@ -61,7 +61,7 @@ static CURLcode ldap_done(struct connectdata *conn, CURLcode, bool); static CURLcode ldap_connect(struct connectdata *conn, bool *done); static CURLcode ldap_connecting(struct connectdata *conn, bool *done); -static CURLcode ldap_disconnect(struct connectdata *conn); +static CURLcode ldap_disconnect(struct connectdata *conn, bool dead_connection); static Curl_recv ldap_recv; @@ -188,7 +188,7 @@ if (conn->protocol & PROT_SSL) *ptr++ = 's'; snprintf(ptr, sizeof(hosturl)-(ptr-hosturl), "://%s:%d", - conn->host.name, conn->port); + conn->host.name, conn->remote_port); rc = ldap_init_fd(conn->sock[FIRSTSOCKET], li->proto, hosturl, &li->ld); if (rc) { @@ -344,9 +344,10 @@ return CURLE_OK; } -static CURLcode ldap_disconnect(struct connectdata *conn) +static CURLcode ldap_disconnect(struct connectdata *conn, bool dead_connection) { ldapconninfo *li = conn->proto.generic; + (void) dead_connection; if (li) { if (li->ld) { @@ -499,6 +500,8 @@ if (bv.bv_len > 7 && !strncmp(bv.bv_val + bv.bv_len - 7, ";binary", 7)) binary = 1; + else + binary = 0; for (i=0; bvals[i].bv_val != NULL; i++) { int binval = 0; @@ -509,14 +512,14 @@ 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])) { + if (ISSPACE(bvals[i].bv_val[0]) || + ISSPACE(bvals[i].bv_val[bvals[i].bv_len-1])) { binval = 1; } else { /* check for unprintable characters */ unsigned int j; for (j=0; j #include "rawstr.h" +#include "warnless.h" #include "parsedate.h" const char * const Curl_wkday[] = @@ -378,7 +379,7 @@ secnum = 0; } else { - val = (int)strtol(date, &end, 10); + val = curlx_sltosi(strtol(date, &end, 10)); if((tzoff == -1) && ((end - date) == 4) && diff -Nru curl-7.21.2/lib/pingpong.c curl-7.21.3/lib/pingpong.c --- curl-7.21.2/lib/pingpong.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/pingpong.c 2010-11-14 12:47:26.000000000 +0100 @@ -217,11 +217,12 @@ #endif /* CURL_DOES_CONVERSIONS */ #if defined(HAVE_KRB4) || defined(HAVE_GSSAPI) - conn->data_prot = prot_cmd; + conn->data_prot = PROT_CMD; #endif res = Curl_write(conn, conn->sock[FIRSTSOCKET], sptr, write_len, &bytes_written); #if defined(HAVE_KRB4) || defined(HAVE_GSSAPI) + DEBUGASSERT(data_sec > PROT_NONE && data_sec < PROT_LAST); conn->data_prot = data_sec; #endif @@ -331,13 +332,13 @@ int res; #if defined(HAVE_KRB4) || defined(HAVE_GSSAPI) enum protection_level prot = conn->data_prot; - - conn->data_prot = 0; + conn->data_prot = PROT_CLEAR; #endif DEBUGASSERT((ptr+BUFSIZE-pp->nread_resp) <= (buf+BUFSIZE+1)); res = Curl_read(conn, sockfd, ptr, BUFSIZE-pp->nread_resp, &gotbytes); #if defined(HAVE_KRB4) || defined(HAVE_GSSAPI) + DEBUGASSERT(prot > PROT_NONE && prot < PROT_LAST); conn->data_prot = prot; #endif if(res == CURLE_AGAIN) @@ -362,7 +363,7 @@ else if(gotbytes <= 0) { keepon = FALSE; result = CURLE_RECV_ERROR; - failf(data, "FTP response reading failed"); + failf(data, "response reading failed"); } else { /* we got a whole chunk of data, which can be anything from one diff -Nru curl-7.21.2/lib/polarssl.c curl-7.21.3/lib/polarssl.c --- curl-7.21.2/lib/polarssl.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/polarssl.c 2010-11-08 08:56:20.000000000 +0100 @@ -221,7 +221,7 @@ ssl_set_dbg(&conn->ssl[sockindex].ssl, polarssl_debug, data); #endif - do { + for(;;) { if (!(ret = ssl_handshake(&conn->ssl[sockindex].ssl))) { break; } else if(ret != POLARSSL_ERR_NET_TRY_AGAIN) { @@ -250,7 +250,7 @@ break; } } - } while (1); + } infof(data, "PolarSSL: Handshake complete, cipher is %s\n", ssl_get_cipher(&conn->ssl[sockindex].ssl)); diff -Nru curl-7.21.2/lib/pop3.c curl-7.21.3/lib/pop3.c --- curl-7.21.2/lib/pop3.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/pop3.c 2010-12-06 14:41:18.000000000 +0100 @@ -101,7 +101,7 @@ static CURLcode pop3_done(struct connectdata *conn, CURLcode, bool premature); static CURLcode pop3_connect(struct connectdata *conn, bool *done); -static CURLcode pop3_disconnect(struct connectdata *conn); +static CURLcode pop3_disconnect(struct connectdata *conn, bool dead_connection); static CURLcode pop3_multi_statemach(struct connectdata *conn, bool *done); static int pop3_getsock(struct connectdata *conn, curl_socket_t *socks, @@ -817,7 +817,7 @@ * Disconnect from an POP3 server. Cleanup protocol-specific per-connection * resources. BLOCKING. */ -static CURLcode pop3_disconnect(struct connectdata *conn) +static CURLcode pop3_disconnect(struct connectdata *conn, bool dead_connection) { struct pop3_conn *pop3c= &conn->proto.pop3c; @@ -828,7 +828,7 @@ /* The POP3 session may or may not have been allocated/setup at this point! */ - if(pop3c->pp.conn) + if(!dead_connection && pop3c->pp.conn) (void)pop3_quit(conn); /* ignore errors on the LOGOUT */ diff -Nru curl-7.21.2/lib/rtsp.c curl-7.21.3/lib/rtsp.c --- curl-7.21.2/lib/rtsp.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/rtsp.c 2010-12-06 14:41:18.000000000 +0100 @@ -117,7 +117,9 @@ return httpStatus; } -CURLcode Curl_rtsp_disconnect(struct connectdata *conn) { +CURLcode Curl_rtsp_disconnect(struct connectdata *conn, bool dead_connection) +{ + (void) dead_connection; Curl_safefree(conn->proto.rtspc.rtp_buf); return CURLE_OK; } diff -Nru curl-7.21.2/lib/rtsp.h curl-7.21.3/lib/rtsp.h --- curl-7.21.2/lib/rtsp.h 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/rtsp.h 2010-12-06 14:41:18.000000000 +0100 @@ -43,7 +43,7 @@ CURLcode Curl_rtsp(struct connectdata *conn, bool *done); CURLcode Curl_rtsp_done(struct connectdata *conn, CURLcode, bool premature); CURLcode Curl_rtsp_connect(struct connectdata *conn, bool *done); -CURLcode Curl_rtsp_disconnect(struct connectdata *conn); +CURLcode Curl_rtsp_disconnect(struct connectdata *conn, bool dead_connection); CURLcode Curl_rtsp_parseheader(struct connectdata *conn, char *header); diff -Nru curl-7.21.2/lib/security.c curl-7.21.3/lib/security.c --- curl-7.21.2/lib/security.c 2010-10-01 22:48:40.000000000 +0200 +++ curl-7.21.3/lib/security.c 2010-11-14 12:47:26.000000000 +0100 @@ -72,10 +72,10 @@ enum protection_level level; const char *name; } level_names[] = { - { prot_clear, "clear" }, - { prot_safe, "safe" }, - { prot_confidential, "confidential" }, - { prot_private, "private" } + { PROT_CLEAR, "clear" }, + { PROT_SAFE, "safe" }, + { PROT_CONFIDENTIAL, "confidential" }, + { PROT_PRIVATE, "private" } }; static enum protection_level @@ -85,22 +85,22 @@ for(i = 0; i < (int)sizeof(level_names)/(int)sizeof(level_names[0]); i++) if(checkprefix(name, level_names[i].name)) return level_names[i].level; - return (enum protection_level)-1; + return PROT_NONE; } /* Convert a protocol |level| to its char representation. We take an int to catch programming mistakes. */ static char level_to_char(int level) { switch(level) { - case prot_clear: + case PROT_CLEAR: return 'C'; - case prot_safe: + case PROT_SAFE: return 'S'; - case prot_confidential: + case PROT_CONFIDENTIAL: return 'E'; - case prot_private: + case PROT_PRIVATE: return 'P'; - case prot_cmd: + case PROT_CMD: /* Fall through */ default: /* Those 2 cases should not be reached! */ @@ -247,7 +247,7 @@ *err = CURLE_OK; /* Handle clear text response. */ - if(conn->sec_complete == 0 || conn->data_prot == prot_clear) + if(conn->sec_complete == 0 || conn->data_prot == PROT_CLEAR) return read(fd, buffer, len); if(conn->in_buffer.eof_flag) { @@ -288,11 +288,13 @@ char *buffer; char *cmd_buffer; enum protection_level prot_level = conn->data_prot; - bool iscmd = prot_level == prot_cmd; + bool iscmd = prot_level == PROT_CMD; + + DEBUGASSERT(prot_level > PROT_NONE && prot_level < PROT_LAST); if(iscmd) { if(!strncmp(from, "PASS ", 5) || !strncmp(from, "ACCT ", 5)) - prot_level = prot_private; + prot_level = PROT_PRIVATE; else prot_level = conn->command_prot; } @@ -303,14 +305,14 @@ if(bytes > 0) { static const char *enc = "ENC "; static const char *mic = "MIC "; - if(prot_level == prot_private) + if(prot_level == PROT_PRIVATE) socket_write(conn, fd, enc, 4); else socket_write(conn, fd, mic, 4); socket_write(conn, fd, cmd_buffer, bytes); socket_write(conn, fd, "\r\n", 2); - infof(conn->data, "Send: %s%s\n", prot_level == prot_private?enc:mic, + infof(conn->data, "Send: %s%s\n", prot_level == PROT_PRIVATE?enc:mic, cmd_buffer); free(cmd_buffer); } @@ -355,8 +357,8 @@ return sec_write(conn, fd, buffer, len); } -/* FIXME: |level| should not be an int but a struct protection_level */ -int Curl_sec_read_msg(struct connectdata *conn, char *buffer, int level) +int Curl_sec_read_msg(struct connectdata *conn, char *buffer, + enum protection_level level) { /* decoded_len should be size_t or ssize_t but conn->mech->decode returns an int */ @@ -364,6 +366,8 @@ char *buf; int ret_code; + DEBUGASSERT(level > PROT_NONE && level < PROT_LAST); + decoded_len = Curl_base64_decode(buffer + 4, (unsigned char **)&buf); if(decoded_len <= 0) { free(buf); @@ -399,22 +403,16 @@ return ret_code; } -enum protection_level -Curl_set_command_prot(struct connectdata *conn, enum protection_level level) -{ - enum protection_level old = conn->command_prot; - conn->command_prot = level; - return old; -} - /* FIXME: The error code returned here is never checked. */ -int Curl_sec_set_protection_level(struct connectdata *conn) +static int sec_set_protection_level(struct connectdata *conn) { int code; char* pbsz; static unsigned int buffer_size = 1 << 20; /* 1048576 */ enum protection_level level = conn->request_data_prot; + DEBUGASSERT(level > PROT_NONE && level < PROT_LAST); + if(!conn->sec_complete) { infof(conn->data, "Trying to change the protection level after the" "completion of the data exchange.\n"); @@ -457,7 +455,7 @@ } conn->data_prot = level; - if(level == prot_private) + if(level == PROT_PRIVATE) conn->command_prot = level; return 0; @@ -466,10 +464,11 @@ int Curl_sec_request_prot(struct connectdata *conn, const char *level) { - int l = name_to_level(level); - if(l == -1) + enum protection_level l = name_to_level(level); + if(l == PROT_NONE) return -1; - conn->request_data_prot = (enum protection_level)l; + DEBUGASSERT(l > PROT_NONE && l < PROT_LAST); + conn->request_data_prot = l; return 0; } @@ -498,7 +497,7 @@ conn->app_data = tmp_allocation; if((*mech)->init) { - ret = (*mech)->init(conn); + ret = (*mech)->init(conn->app_data); if(ret != 0) { infof(data, "Failed initialization for %s. Skipping it.\n", mech_name); continue; @@ -548,10 +547,10 @@ conn->send[FIRSTSOCKET] = sec_send; conn->recv[SECONDARYSOCKET] = sec_recv; conn->send[SECONDARYSOCKET] = sec_send; - conn->command_prot = prot_safe; + conn->command_prot = PROT_SAFE; /* Set the requested protection level */ /* BLOCKING */ - Curl_sec_set_protection_level(conn); + (void)sec_set_protection_level(conn); break; } @@ -583,7 +582,7 @@ conn->in_buffer.eof_flag = 0; } conn->sec_complete = 0; - conn->data_prot = (enum protection_level)0; + conn->data_prot = PROT_CLEAR; conn->mech = NULL; } diff -Nru curl-7.21.2/lib/sendf.c curl-7.21.3/lib/sendf.c --- curl-7.21.2/lib/sendf.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/sendf.c 2010-12-05 23:04:11.000000000 +0100 @@ -301,6 +301,7 @@ } else { failf(conn->data, "Send failure: %s", Curl_strerror(conn, err)); + conn->data->state.os_errno = err; *code = CURLE_SEND_ERROR; } } @@ -355,6 +356,7 @@ } else { failf(conn->data, "Recv failure: %s", Curl_strerror(conn, err)); + conn->data->state.os_errno = err; *code = CURLE_RECV_ERROR; } } diff -Nru curl-7.21.2/lib/smtp.c curl-7.21.3/lib/smtp.c --- curl-7.21.2/lib/smtp.c 2010-10-12 22:56:21.000000000 +0200 +++ curl-7.21.3/lib/smtp.c 2010-12-06 14:41:18.000000000 +0100 @@ -92,6 +92,7 @@ #include "curl_md5.h" #include "curl_hmac.h" #include "curl_gethostname.h" +#include "warnless.h" #define _MPRINTF_REPLACE /* use our functions only */ #include @@ -106,7 +107,7 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode, bool premature); static CURLcode smtp_connect(struct connectdata *conn, bool *done); -static CURLcode smtp_disconnect(struct connectdata *conn); +static CURLcode smtp_disconnect(struct connectdata *conn, bool dead_connection); static CURLcode smtp_multi_statemach(struct connectdata *conn, bool *done); static int smtp_getsock(struct connectdata *conn, curl_socket_t *socks, @@ -225,8 +226,8 @@ if(len < 4 || !ISDIGIT(line[0]) || !ISDIGIT(line[1]) || !ISDIGIT(line[2])) return FALSE; /* Nothing for us. */ - if((result = line[3] == ' ')) - *resp = atoi(line); + if((result = (line[3] == ' ')) != 0) + *resp = curlx_sltosi(strtol(line, NULL, 10)); line += 4; len -= 4; @@ -676,7 +677,8 @@ if(++l) { chlg64[l] = '\0'; - if(!(chlglen = Curl_base64_decode(chlg64, &chlg))) + chlglen = Curl_base64_decode(chlg64, &chlg); + if(!chlglen) return CURLE_OUT_OF_MEMORY; } } @@ -1308,7 +1310,7 @@ * Disconnect from an SMTP server. Cleanup protocol-specific per-connection * resources. BLOCKING. */ -static CURLcode smtp_disconnect(struct connectdata *conn) +static CURLcode smtp_disconnect(struct connectdata *conn, bool dead_connection) { struct smtp_conn *smtpc= &conn->proto.smtpc; @@ -1319,7 +1321,7 @@ /* The SMTP session may or may not have been allocated/setup at this point! */ - if(smtpc->pp.conn) + if(!dead_connection && smtpc->pp.conn) (void)smtp_quit(conn); /* ignore errors on the LOGOUT */ Curl_pp_disconnect(&smtpc->pp); diff -Nru curl-7.21.2/lib/ssh.c curl-7.21.3/lib/ssh.c --- curl-7.21.2/lib/ssh.c 2010-10-12 22:56:21.000000000 +0200 +++ curl-7.21.3/lib/ssh.c 2010-12-06 14:41:18.000000000 +0100 @@ -101,6 +101,7 @@ #include "strtoofft.h" #include "multiif.h" #include "select.h" +#include "warnless.h" #define _MPRINTF_REPLACE /* use our functions only */ #include @@ -116,9 +117,9 @@ /* Local functions: */ static const char *sftp_libssh2_strerror(unsigned long err); -static LIBSSH2_ALLOC_FUNC(libssh2_malloc); -static LIBSSH2_REALLOC_FUNC(libssh2_realloc); -static LIBSSH2_FREE_FUNC(libssh2_free); +static LIBSSH2_ALLOC_FUNC(my_libssh2_malloc); +static LIBSSH2_REALLOC_FUNC(my_libssh2_realloc); +static LIBSSH2_FREE_FUNC(my_libssh2_free); static CURLcode get_pathname(const char **cpp, char **path); @@ -134,13 +135,13 @@ CURLcode, bool premature); static CURLcode scp_doing(struct connectdata *conn, bool *dophase_done); -static CURLcode scp_disconnect(struct connectdata *conn); +static CURLcode scp_disconnect(struct connectdata *conn, bool dead_connection); static CURLcode sftp_done(struct connectdata *conn, CURLcode, bool premature); static CURLcode sftp_doing(struct connectdata *conn, bool *dophase_done); -static CURLcode sftp_disconnect(struct connectdata *conn); +static CURLcode sftp_disconnect(struct connectdata *conn, bool dead_connection); static CURLcode sftp_perform(struct connectdata *conn, bool *connected, @@ -301,19 +302,19 @@ return CURLE_SSH; } -static LIBSSH2_ALLOC_FUNC(libssh2_malloc) +static LIBSSH2_ALLOC_FUNC(my_libssh2_malloc) { (void)abstract; /* arg not used */ return malloc(count); } -static LIBSSH2_REALLOC_FUNC(libssh2_realloc) +static LIBSSH2_REALLOC_FUNC(my_libssh2_realloc) { (void)abstract; /* arg not used */ return realloc(ptr, count); } -static LIBSSH2_FREE_FUNC(libssh2_free) +static LIBSSH2_FREE_FUNC(my_libssh2_free) { (void)abstract; /* arg not used */ free(ptr); @@ -497,6 +498,13 @@ #endif /* + * libssh2 1.2.8 fixed the problem with 32bit ints used for sockets on win64. + */ +#ifdef HAVE_LIBSSH2_SESSION_HANDSHAKE +#define libssh2_session_startup(x,y) libssh2_session_handshake(x,y) +#endif + +/* * ssh_statemach_act() runs the SSH state machine as far as it can without * blocking and without reaching the end. The data the pointer 'block' points * to will be set to TRUE if the libssh2 function returns LIBSSH2_ERROR_EAGAIN @@ -1431,7 +1439,7 @@ if(data->state.resume_from != 0) { LIBSSH2_SFTP_ATTRIBUTES attrs; - if(data->state.resume_from< 0) { + if(data->state.resume_from < 0) { rc = libssh2_sftp_stat_ex(sshc->sftp_session, sftp_scp->path, (unsigned int)strlen(sftp_scp->path), LIBSSH2_SFTP_STAT, &attrs); @@ -1534,21 +1542,17 @@ /* seekerr == CURL_SEEKFUNC_CANTSEEK (can't seek to offset) */ else { curl_off_t passed=0; - curl_off_t readthisamountnow; - curl_off_t actuallyread; do { - readthisamountnow = (data->state.resume_from - passed); - - if(readthisamountnow > BUFSIZE) - readthisamountnow = BUFSIZE; - - actuallyread = - (curl_off_t) conn->fread_func(data->state.buffer, 1, - (size_t)readthisamountnow, - conn->fread_in); + size_t readthisamountnow = + (data->state.resume_from - passed > CURL_OFF_T_C(BUFSIZE)) ? + BUFSIZE : curlx_sotouz(data->state.resume_from - passed); + + size_t actuallyread = + conn->fread_func(data->state.buffer, 1, readthisamountnow, + conn->fread_in); passed += actuallyread; - if((actuallyread <= 0) || (actuallyread > readthisamountnow)) { + if((actuallyread == 0) || (actuallyread > readthisamountnow)) { /* this checks for greater-than only to make sure that the CURL_READFUNC_ABORT return code still aborts */ failf(data, "Failed to read data"); @@ -1559,7 +1563,7 @@ } /* now, decrease the size of the read */ - if(data->set.infilesize>0) { + if(data->set.infilesize > 0) { data->set.infilesize -= data->state.resume_from; data->req.size = data->set.infilesize; Curl_pgrsSetUploadSize(data, data->set.infilesize); @@ -1567,7 +1571,7 @@ SFTP_SEEK(sshc->sftp_handle, data->state.resume_from); } - if(data->set.infilesize>0) { + if(data->set.infilesize > 0) { data->req.size = data->set.infilesize; Curl_pgrsSetUploadSize(data, data->set.infilesize); } @@ -1928,7 +1932,7 @@ char *ptr2; from=curlx_strtoofft(conn->data->state.range, &ptr, 0); - while(*ptr && (isspace((int)*ptr) || (*ptr=='-'))) + while(*ptr && (ISSPACE(*ptr) || (*ptr=='-'))) ptr++; to=curlx_strtoofft(ptr, &ptr2, 0); if((ptr == ptr2) /* no "to" value given */ @@ -1962,7 +1966,7 @@ /* We can resume if we can seek to the resume position */ if(data->state.resume_from) { - if(data->state.resume_from< 0) { + if(data->state.resume_from < 0) { /* We're supposed to download the last abs(from) bytes */ if((curl_off_t)attrs.filesize < -data->state.resume_from) { failf(data, "Offset (%" @@ -1971,7 +1975,7 @@ return CURLE_BAD_DOWNLOAD_RESUME; } /* download from where? */ - data->state.resume_from = attrs.filesize - data->state.resume_from; + data->state.resume_from += attrs.filesize; } else { if((curl_off_t)attrs.filesize < data->state.resume_from) { @@ -2543,8 +2547,9 @@ sock = conn->sock[FIRSTSOCKET]; #endif /* CURL_LIBSSH2_DEBUG */ - ssh->ssh_session = libssh2_session_init_ex(libssh2_malloc, libssh2_free, - libssh2_realloc, conn); + ssh->ssh_session = libssh2_session_init_ex(my_libssh2_malloc, + my_libssh2_free, + my_libssh2_realloc, conn); if(ssh->ssh_session == NULL) { failf(data, "Failure initialising ssh session"); return CURLE_FAILED_INIT; @@ -2684,10 +2689,11 @@ /* BLOCKING, but the function is using the state machine so the only reason this is still blocking is that the multi interface code has no support for disconnecting operations that takes a while */ -static CURLcode scp_disconnect(struct connectdata *conn) +static CURLcode scp_disconnect(struct connectdata *conn, bool dead_connection) { CURLcode result = CURLE_OK; struct ssh_conn *ssh = &conn->proto.sshc; + (void) dead_connection; Curl_safefree(conn->data->state.proto.ssh); conn->data->state.proto.ssh = NULL; @@ -2848,9 +2854,10 @@ /* BLOCKING, but the function is using the state machine so the only reason this is still blocking is that the multi interface code has no support for disconnecting operations that takes a while */ -static CURLcode sftp_disconnect(struct connectdata *conn) +static CURLcode sftp_disconnect(struct connectdata *conn, bool dead_connection) { CURLcode result = CURLE_OK; + (void) dead_connection; DEBUGF(infof(conn->data, "SSH DISCONNECT starts now\n")); diff -Nru curl-7.21.2/lib/ssluse.c curl-7.21.3/lib/ssluse.c --- curl-7.21.2/lib/ssluse.c 2010-09-18 23:00:21.000000000 +0200 +++ curl-7.21.3/lib/ssluse.c 2010-12-06 14:41:18.000000000 +0100 @@ -1049,7 +1049,7 @@ static int hostmatch(const char *hostname, const char *pattern) { - while(1) { + for(;;) { char c = *pattern++; if(c == '\0') @@ -2371,6 +2371,12 @@ long timeout_ms; int what; + /* check if the connection has already been established */ + if(ssl_connection_complete == connssl->state) { + *done = TRUE; + return CURLE_OK; + } + if(ssl_connect_1==connssl->connecting_state) { /* Find out how much more time we're allowed */ timeout_ms = Curl_timeleft(conn, NULL, TRUE); diff -Nru curl-7.21.2/lib/tftp.c curl-7.21.3/lib/tftp.c --- curl-7.21.2/lib/tftp.c 2010-10-01 22:48:40.000000000 +0200 +++ curl-7.21.3/lib/tftp.c 2010-12-06 14:41:18.000000000 +0100 @@ -166,7 +166,7 @@ static CURLcode tftp_rx(tftp_state_data_t *state, tftp_event_t event) ; static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event) ; static CURLcode tftp_connect(struct connectdata *conn, bool *done); -static CURLcode tftp_disconnect(struct connectdata *conn); +static CURLcode tftp_disconnect(struct connectdata *conn, bool dead_connection); static CURLcode tftp_do(struct connectdata *conn, bool *done); static CURLcode tftp_done(struct connectdata *conn, CURLcode, bool premature); @@ -738,7 +738,7 @@ } else { /* Re-send the data packet */ - sbytes = sendto(state->sockfd, (void *)&state->spacket, + sbytes = sendto(state->sockfd, (void *)&state->spacket.data, 4+state->sbytes, SEND_4TH_ARG, (struct sockaddr *)&state->remote_addr, state->remote_addrlen); @@ -925,9 +925,10 @@ * The disconnect callback * **********************************************************/ -static CURLcode tftp_disconnect(struct connectdata *conn) +static CURLcode tftp_disconnect(struct connectdata *conn, bool dead_connection) { tftp_state_data_t *state = conn->proto.tftpc; + (void) dead_connection; /* done, free dynamically allocated pkt buffers */ if(state) { diff -Nru curl-7.21.2/lib/transfer.c curl-7.21.3/lib/transfer.c --- curl-7.21.2/lib/transfer.c 2010-09-18 23:18:00.000000000 +0200 +++ curl-7.21.3/lib/transfer.c 2010-12-06 14:41:18.000000000 +0100 @@ -1382,6 +1382,46 @@ return CURLE_OK; } +static void loadhostpairs(struct SessionHandle *data) +{ + struct curl_slist *hostp; + char hostname[256]; + char address[256]; + int port; + + for(hostp = data->change.resolve; hostp; hostp = hostp->next ) { + if(!hostp->data) + continue; + if(hostp->data[0] == '-') { + /* mark an entry for removal */ + } + else if(3 == sscanf(hostp->data, "%255[^:]:%d:%255s", hostname, &port, + address)) { + struct Curl_dns_entry *dns; + Curl_addrinfo *addr; + + addr = Curl_str2addr(address, port); + if(!addr) { + infof(data, "Resolve %s found illegal!\n", hostp->data); + continue; + } + infof(data, "Added %s:%d:%s to DNS cache\n", + hostname, port, address); + + if(data->share) + Curl_share_lock(data, CURL_LOCK_DATA_DNS, CURL_LOCK_ACCESS_SINGLE); + + /* put this host in the cache */ + dns = Curl_cache_addr(data, addr, hostname, port); + + if(data->share) + Curl_share_unlock(data, CURL_LOCK_DATA_DNS); + } + } + data->change.resolve = NULL; /* dealt with now */ +} + + /* * Curl_pretransfer() is called immediately before a transfer starts. */ @@ -1415,9 +1455,12 @@ data->info.wouldredirect = NULL; /* If there is a list of cookie files to read, do it now! */ - if(data->change.cookielist) { + if(data->change.cookielist) Curl_cookie_loadfiles(data); - } + + /* If there is a list of host pairs to deal with */ + if(data->change.resolve) + loadhostpairs(data); /* Allow data->set.use_port to set which port to use. This needs to be * disabled for example when we follow Location: headers to URLs using @@ -1916,7 +1959,7 @@ res = Curl_async_resolved(*conn, &protocol_done); else /* if we can't resolve, we kill this "connection" now */ - (void)Curl_disconnect(*conn); + (void)Curl_disconnect(*conn, /* dead_connection */ FALSE); } return res; diff -Nru curl-7.21.2/lib/url.c curl-7.21.3/lib/url.c --- curl-7.21.2/lib/url.c 2010-10-01 22:48:40.000000000 +0200 +++ curl-7.21.3/lib/url.c 2010-12-15 10:04:43.000000000 +0100 @@ -651,7 +651,7 @@ close handles not in use. */ for(i=newamount; i< c->num; i++) - Curl_disconnect(c->connects[i]); + Curl_disconnect(c->connects[i], /* dead_connection */ FALSE); /* If the most recent connection is no longer valid, mark it invalid. */ @@ -1006,7 +1006,21 @@ * An FTP option that modifies an upload to create missing directories on * the server. */ - data->set.ftp_create_missing_dirs = (int)va_arg(param, long); + switch(va_arg(param, long)) { + case 0: + data->set.ftp_create_missing_dirs = 0; + break; + case 1: + data->set.ftp_create_missing_dirs = 1; + break; + case 2: + data->set.ftp_create_missing_dirs = 2; + break; + default: + /* reserve other values for future use */ + result = CURLE_FAILED_INIT; + break; + } break; case CURLOPT_SERVER_RESPONSE_TIMEOUT: /* @@ -1750,6 +1764,20 @@ */ data->set.quote = va_arg(param, struct curl_slist *); break; + case CURLOPT_RESOLVE: + /* + * List of NAME:[address] names to populate the DNS cache with + * Prefix the NAME with dash (-) to _remove_ the name from the cache. + * + * Names added with this API will remain in the cache until explicitly + * removed or the handle is cleaned up. + * + * This API can remove any name from the DNS cache, but only entries + * that aren't actually in use right now will be pruned immediately. + */ + data->set.resolve = va_arg(param, struct curl_slist *); + data->change.resolve = data->set.resolve; + break; case CURLOPT_PROGRESSFUNCTION: /* * Progress callback function @@ -1987,13 +2015,13 @@ /* * Set what local port to bind the socket to when performing an operation. */ - data->set.localport = (unsigned short) va_arg(param, long); + data->set.localport = curlx_sltous(va_arg(param, long)); break; case CURLOPT_LOCALPORTRANGE: /* * Set number of local ports to try, starting with CURLOPT_LOCALPORT. */ - data->set.localportrange = (int) va_arg(param, long); + data->set.localportrange = curlx_sltosi(va_arg(param, long)); break; case CURLOPT_KRBLEVEL: /* @@ -2166,13 +2194,14 @@ data->set.max_filesize = va_arg(param, long); break; +#ifdef USE_SSL case CURLOPT_USE_SSL: /* * Make transfers attempt to use SSL/TLS. */ data->set.ftp_ssl = (curl_usessl)va_arg(param, long); break; - +#endif case CURLOPT_FTPSSLAUTH: /* * Set a specific auth for FTP-SSL transfers. @@ -2181,7 +2210,7 @@ break; case CURLOPT_IPRESOLVE: - data->set.ip_version = va_arg(param, long); + data->set.ipver = va_arg(param, long); break; case CURLOPT_MAXFILESIZE_LARGE: @@ -2341,7 +2370,7 @@ * know that an unsigned int will always hold the value so we blindly * typecast to this type */ - data->set.scope = (unsigned int) va_arg(param, long); + data->set.scope = curlx_sltoui(va_arg(param, long)); break; case CURLOPT_PROTOCOLS: @@ -2558,7 +2587,7 @@ free(conn); /* free all the connection oriented data */ } -CURLcode Curl_disconnect(struct connectdata *conn) +CURLcode Curl_disconnect(struct connectdata *conn, bool dead_connection) { struct SessionHandle *data; if(!conn) @@ -2618,7 +2647,7 @@ if(conn->handler->disconnect) /* This is set if protocol-specific cleanups should be made */ - conn->handler->disconnect(conn); + conn->handler->disconnect(conn, dead_connection); if(-1 != conn->connectindex) { /* unlink ourselves! */ @@ -2709,12 +2738,14 @@ } #endif /* CURL_DISABLE_RTSP */ -static bool IsPipeliningPossible(const struct SessionHandle *handle) +static bool IsPipeliningPossible(const struct SessionHandle *handle, + const struct connectdata *conn) { - if(handle->multi && Curl_multi_canPipeline(handle->multi) && - (handle->set.httpreq == HTTPREQ_GET || - handle->set.httpreq == HTTPREQ_HEAD) && - handle->set.httpversion != CURL_HTTP_VERSION_1_0) + if((conn->handler->protocol & PROT_HTTP) && + handle->multi && Curl_multi_canPipeline(handle->multi) && + (handle->set.httpreq == HTTPREQ_GET || + handle->set.httpreq == HTTPREQ_HEAD) && + handle->set.httpversion != CURL_HTTP_VERSION_1_0) return TRUE; return FALSE; @@ -2731,13 +2762,6 @@ CURLcode Curl_addHandleToPipeline(struct SessionHandle *data, struct curl_llist *pipeline) { -#ifdef DEBUGBUILD - if(!IsPipeliningPossible(data)) { - /* when not pipelined, there MUST be no handle in the list already */ - if(pipeline->head) - infof(data, "PIPE when no PIPE supposed!\n"); - } -#endif if(!Curl_llist_insert_next(pipeline, pipeline->tail, data)) return CURLE_OUT_OF_MEMORY; return CURLE_OK; @@ -2847,7 +2871,7 @@ { long i; struct connectdata *check; - bool canPipeline = IsPipeliningPossible(data); + bool canPipeline = IsPipeliningPossible(data, needle); for(i=0; i< data->state.connc->num; i++) { bool match = FALSE; @@ -2886,7 +2910,8 @@ check->data = data; infof(data, "Connection #%ld seems to be dead!\n", i); - Curl_disconnect(check); /* disconnect resources */ + /* disconnect resources */ + Curl_disconnect(check, /* dead_connection */ TRUE); data->state.connc->connects[i]=NULL; /* nothing here */ continue; @@ -2898,11 +2923,11 @@ struct SessionHandle* sh = gethandleathead(check->send_pipe); struct SessionHandle* rh = gethandleathead(check->recv_pipe); if(sh) { - if(!IsPipeliningPossible(sh)) + if(!IsPipeliningPossible(sh, check)) continue; } else if(rh) { - if(!IsPipeliningPossible(rh)) + if(!IsPipeliningPossible(rh, check)) continue; } @@ -3073,7 +3098,7 @@ conn->data = data; /* the winner gets the honour of being disconnected */ - (void)Curl_disconnect(conn); + (void)Curl_disconnect(conn, /* dead_connection */ FALSE); /* clean the array entry */ data->state.connc->connects[connindex] = NULL; @@ -3440,14 +3465,19 @@ #endif } +static void llist_dtor(void *user, void *element) +{ + (void)user; + (void)element; + /* Do nothing */ +} + /* * Allocate and initialize a new connectdata object. */ -static struct connectdata *allocate_conn(void) +static struct connectdata *allocate_conn(struct SessionHandle *data) { - struct connectdata *conn; - - conn = calloc(1, sizeof(struct connectdata)); + struct connectdata *conn = calloc(1, sizeof(struct connectdata)); if(!conn) return NULL; @@ -3470,7 +3500,70 @@ /* Store creation time to help future close decision making */ conn->created = Curl_tvnow(); + conn->data = data; /* Setup the association between this connection + and the SessionHandle */ + + conn->proxytype = data->set.proxytype; /* type */ + +#ifdef CURL_DISABLE_PROXY + + conn->bits.proxy = FALSE; + conn->bits.httpproxy = FALSE; + conn->bits.proxy_user_passwd = FALSE; + conn->bits.tunnel_proxy = FALSE; + +#else /* CURL_DISABLE_PROXY */ + + conn->bits.proxy = (bool)(data->set.str[STRING_PROXY] && + *data->set.str[STRING_PROXY]); + conn->bits.httpproxy = (bool)(conn->bits.proxy && + (conn->proxytype == CURLPROXY_HTTP || + conn->proxytype == CURLPROXY_HTTP_1_0)); + conn->bits.proxy_user_passwd = + (bool)(NULL != data->set.str[STRING_PROXYUSERNAME]); + conn->bits.tunnel_proxy = data->set.tunnel_thru_httpproxy; + +#endif /* CURL_DISABLE_PROXY */ + + conn->bits.user_passwd = (bool)(NULL != data->set.str[STRING_USERNAME]); + conn->bits.ftp_use_epsv = data->set.ftp_use_epsv; + conn->bits.ftp_use_eprt = data->set.ftp_use_eprt; + + conn->verifypeer = data->set.ssl.verifypeer; + conn->verifyhost = data->set.ssl.verifyhost; + + conn->ip_version = data->set.ipver; + + if(data->multi && Curl_multi_canPipeline(data->multi) && + !conn->master_buffer) { + /* Allocate master_buffer to be used for pipelining */ + conn->master_buffer = calloc(BUFSIZE, sizeof (char)); + if(!conn->master_buffer) + goto error; + } + + /* Initialize the pipeline lists */ + conn->send_pipe = Curl_llist_alloc((curl_llist_dtor) llist_dtor); + conn->recv_pipe = Curl_llist_alloc((curl_llist_dtor) llist_dtor); + conn->pend_pipe = Curl_llist_alloc((curl_llist_dtor) llist_dtor); + conn->done_pipe = Curl_llist_alloc((curl_llist_dtor) llist_dtor); + if(!conn->send_pipe || !conn->recv_pipe || !conn->pend_pipe || + !conn->done_pipe) + goto error; + +#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI) + conn->data_prot = PROT_CLEAR; +#endif + return conn; + error: + Curl_llist_destroy(conn->send_pipe, NULL); + Curl_llist_destroy(conn->recv_pipe, NULL); + Curl_llist_destroy(conn->pend_pipe, NULL); + Curl_llist_destroy(conn->done_pipe, NULL); + Curl_safefree(conn->master_buffer); + Curl_safefree(conn); + return NULL; } static CURLcode findprotocol(struct SessionHandle *data, @@ -3596,7 +3689,7 @@ path[0]=0; if(2 > sscanf(data->change.url, - "%15[^\n:]://%[^\n/]%[^\n]", + "%15[^\n:]://%[^\n/?]%[^\n]", protobuf, conn->host.name, path)) { @@ -3604,7 +3697,7 @@ * The URL was badly formatted, let's try the browser-style _without_ * protocol specified like 'http://'. */ - rc = sscanf(data->change.url, "%[^\n/]%[^\n]", conn->host.name, path); + rc = sscanf(data->change.url, "%[^\n/?]%[^\n]", conn->host.name, path); if(1 > rc) { /* * We couldn't even get this format. @@ -3736,13 +3829,6 @@ return findprotocol(data, conn, protop); } -static void llist_dtor(void *user, void *element) -{ - (void)user; - (void)element; - /* Do nothing */ -} - /* * If we're doing a resumed transfer, we need to setup our stuff * properly. @@ -4079,7 +4165,7 @@ *prox_portno = 0x0; /* cut off number from host name */ prox_portno ++; /* now set the local port number */ - conn->port = atoi(prox_portno); + conn->port = strtol(prox_portno, NULL, 10); } else { /* without a port number after the host name, some people seem to use @@ -4523,6 +4609,9 @@ else free(old_conn->host.rawalloc); /* free the newly allocated name buffer */ + /* persist connection info in session handle */ + Curl_persistconninfo(conn); + /* re-use init */ conn->bits.reuse = TRUE; /* yes, we're re-using here */ @@ -4580,66 +4669,16 @@ parts for checking against the already present connections. In order to not have to modify everything at once, we allocate a temporary connection data struct and fill in for comparison purposes. */ + conn = allocate_conn(data); - conn = allocate_conn(); + if(!conn) + return CURLE_OUT_OF_MEMORY; /* We must set the return variable as soon as possible, so that our parent can cleanup any possible allocs we may have done before any failure */ *in_connect = conn; - if(!conn) - return CURLE_OUT_OF_MEMORY; - - conn->data = data; /* Setup the association between this connection - and the SessionHandle */ - - conn->proxytype = data->set.proxytype; /* type */ - -#ifdef CURL_DISABLE_PROXY - - conn->bits.proxy = FALSE; - conn->bits.httpproxy = FALSE; - conn->bits.proxy_user_passwd = FALSE; - conn->bits.tunnel_proxy = FALSE; - -#else /* CURL_DISABLE_PROXY */ - - conn->bits.proxy = (bool)(data->set.str[STRING_PROXY] && - *data->set.str[STRING_PROXY]); - conn->bits.httpproxy = (bool)(conn->bits.proxy && - (conn->proxytype == CURLPROXY_HTTP || - conn->proxytype == CURLPROXY_HTTP_1_0)); - conn->bits.proxy_user_passwd = - (bool)(NULL != data->set.str[STRING_PROXYUSERNAME]); - conn->bits.tunnel_proxy = data->set.tunnel_thru_httpproxy; - -#endif /* CURL_DISABLE_PROXY */ - - conn->bits.user_passwd = (bool)(NULL != data->set.str[STRING_USERNAME]); - conn->bits.ftp_use_epsv = data->set.ftp_use_epsv; - conn->bits.ftp_use_eprt = data->set.ftp_use_eprt; - - conn->verifypeer = data->set.ssl.verifypeer; - conn->verifyhost = data->set.ssl.verifyhost; - - if(data->multi && Curl_multi_canPipeline(data->multi) && - !conn->master_buffer) { - /* Allocate master_buffer to be used for pipelining */ - conn->master_buffer = calloc(BUFSIZE, sizeof (char)); - if(!conn->master_buffer) - return CURLE_OUT_OF_MEMORY; - } - - /* Initialize the pipeline lists */ - conn->send_pipe = Curl_llist_alloc((curl_llist_dtor) llist_dtor); - conn->recv_pipe = Curl_llist_alloc((curl_llist_dtor) llist_dtor); - conn->pend_pipe = Curl_llist_alloc((curl_llist_dtor) llist_dtor); - conn->done_pipe = Curl_llist_alloc((curl_llist_dtor) llist_dtor); - if(!conn->send_pipe || !conn->recv_pipe || !conn->pend_pipe || - !conn->done_pipe) - return CURLE_OUT_OF_MEMORY; - /* This initing continues below, see the comment "Continue connectdata * initialization here" */ @@ -4899,12 +4938,6 @@ infof(data, "Re-using existing connection! (#%ld) with host %s\n", conn->connectindex, conn->proxy.name?conn->proxy.dispname:conn->host.dispname); - /* copy this IP address to the common buffer for the easy handle so that - the address can actually survice the removal of this connection. strcpy - is safe since the target buffer is big enough to hold the largest - possible IP address */ - strcpy(data->info.ip, conn->ip_addr_str); - } else { /* @@ -5079,7 +5112,7 @@ if(code && *in_connect) { /* We're not allowed to return failure with memory left allocated in the connectdata struct, free those here */ - Curl_disconnect(*in_connect); /* close the connection */ + Curl_disconnect(*in_connect, FALSE); /* close the connection */ *in_connect = NULL; /* return a NULL */ } @@ -5107,7 +5140,7 @@ if(code) /* We're not allowed to return failure with memory left allocated in the connectdata struct, free those here */ - Curl_disconnect(conn); /* close the connection */ + Curl_disconnect(conn, FALSE); /* close the connection */ return code; #else @@ -5199,7 +5232,7 @@ */ if(data->set.reuse_forbid || conn->bits.close || premature || (-1 == conn->connectindex)) { - CURLcode res2 = Curl_disconnect(conn); /* close the connection */ + CURLcode res2 = Curl_disconnect(conn, FALSE); /* close the connection */ /* If we had an error already, make sure we return that one. But if we got a new error, return that. */ diff -Nru curl-7.21.2/lib/urldata.h curl-7.21.3/lib/urldata.h --- curl-7.21.2/lib/urldata.h 2010-10-01 22:48:40.000000000 +0200 +++ curl-7.21.3/lib/urldata.h 2010-12-15 14:49:10.000000000 +0100 @@ -199,12 +199,15 @@ size_t index; int eof_flag; }; + enum protection_level { - prot_clear, - prot_safe, - prot_confidential, - prot_private, - prot_cmd + PROT_NONE, /* first in list */ + PROT_CLEAR, + PROT_SAFE, + PROT_CONFIDENTIAL, + PROT_PRIVATE, + PROT_CMD, + PROT_LAST /* last in list */ }; #endif @@ -643,9 +646,11 @@ int numsocks); /* This function *MAY* be set to a protocol-dependent function that is run - * by the curl_disconnect(), as a step in the disconnection. + * by the curl_disconnect(), as a step in the disconnection. If the handler + * is called because the connection has been considered dead, dead_connection + * is set to TRUE. */ - CURLcode (*disconnect)(struct connectdata *); + CURLcode (*disconnect)(struct connectdata *, bool dead_connection); long defport; /* Default port. */ long protocol; /* PROT_* flags concerning the protocol set */ @@ -754,6 +759,23 @@ unsigned short remote_port; /* what remote port to connect to, not the proxy port! */ + /* 'primary_ip' and 'primary_port' get filled with peer's numerical + ip address and port number whenever an outgoing connection is + *attemted* from the primary socket to a remote address. When more + than one address is tried for a connection these will hold data + for the last attempt. When the connection is actualy established + these are updated with data which comes directly from the socket. */ + + char primary_ip[MAX_IPADR_LEN]; + long primary_port; + + /* 'local_ip' and 'local_port' get filled with local's numerical + ip address and port number whenever an outgoing connection is + **established** from the primary socket to a remote address. */ + + char local_ip[MAX_IPADR_LEN]; + long local_port; + char *user; /* user name string, allocated */ char *passwd; /* password string, allocated */ @@ -779,6 +801,8 @@ const struct Curl_handler * handler; /* Connection's protocol handler. */ + long ip_version; /* copied from the SessionHandle at creation time */ + /**** curl_get() phase fields */ curl_socket_t sockfd; /* socket to read from or CURL_SOCKET_BAD */ @@ -909,15 +933,21 @@ long numconnects; /* how many new connection did libcurl created */ char *contenttype; /* the content type of the object */ char *wouldredirect; /* URL this would've been redirected to if asked to */ - char ip[MAX_IPADR_LEN]; /* this buffer gets the numerical ip version stored - at the connect *attempt* so it will get the last - tried connect IP even on failures */ - long port; /* the remote port the last connection was established to */ - char localip[MAX_IPADR_LEN]; /* this buffer gets the numerical (local) ip - stored from where the last connection was - established */ - long localport; /* the local (src) port the last connection - originated from */ + + /* PureInfo members 'conn_primary_ip', 'conn_primary_port', 'conn_local_ip' + and, 'conn_local_port' are copied over from the connectdata struct in + order to allow curl_easy_getinfo() to return this information even when + the session handle is no longer associated with a connection, and also + allow curl_easy_reset() to clear this information from the session handle + without disturbing information which is still alive, and that might be + reused, in the connection cache. */ + + char conn_primary_ip[MAX_IPADR_LEN]; + long conn_primary_port; + + char conn_local_ip[MAX_IPADR_LEN]; + long conn_local_port; + struct curl_certinfo certs; /* info about the certs, only populated in OpenSSL builds. Asked for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */ @@ -1186,6 +1216,8 @@ bool referer_alloc; /* referer sting is malloc()ed */ struct curl_slist *cookielist; /* list of cookie files set by curl_easy_setopt(COOKIEFILE) calls */ + struct curl_slist *resolve; /* set to point to the set.resolve list when + this should be dealt with in pretransfer */ }; /* @@ -1332,6 +1364,8 @@ struct curl_slist *source_postquote; /* in 3rd party transfer mode - after the transfer on source host */ struct curl_slist *telnet_options; /* linked list of telnet options */ + struct curl_slist *resolve; /* list of names to add/remove from + DNS cache */ curl_TimeCond timecondition; /* kind of time/date comparison */ time_t timevalue; /* what time to compare with */ Curl_HttpReq httpreq; /* what kind of HTTP request (if any) is this */ @@ -1351,8 +1385,8 @@ struct curl_slist *http200aliases; /* linked list of aliases for http200 */ - long ip_version; /* the CURL_IPRESOLVE_* defines in the public header file - 0 - whatever, 1 - v2, 2 - v6 */ + long ipver; /* the CURL_IPRESOLVE_* defines in the public header file + 0 - whatever, 1 - v2, 2 - v6 */ curl_off_t max_filesize; /* Maximum file size to download */ diff -Nru curl-7.21.2/lib/url.h curl-7.21.3/lib/url.h --- curl-7.21.2/lib/url.h 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/lib/url.h 2010-12-06 14:41:18.000000000 +0100 @@ -42,7 +42,7 @@ CURLcode Curl_do(struct connectdata **, bool *done); CURLcode Curl_do_more(struct connectdata *); CURLcode Curl_done(struct connectdata **, CURLcode, bool premature); -CURLcode Curl_disconnect(struct connectdata *); +CURLcode Curl_disconnect(struct connectdata *, bool dead_connection); CURLcode Curl_protocol_connect(struct connectdata *conn, bool *done); CURLcode Curl_protocol_connecting(struct connectdata *conn, bool *done); CURLcode Curl_protocol_doing(struct connectdata *conn, bool *done); diff -Nru curl-7.21.2/lib/warnless.c curl-7.21.3/lib/warnless.c --- curl-7.21.2/lib/warnless.c 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/lib/warnless.c 2010-12-04 10:26:19.000000000 +0100 @@ -37,7 +37,7 @@ # define CURL_MASK_SSHORT 0x7FFFFFFFFFFFFFFF # define CURL_MASK_USHORT 0xFFFFFFFFFFFFFFFF #else -# error "SIZEOF_SHORT not defined" +# error "SIZEOF_SHORT not defined" #endif #if (SIZEOF_INT == 2) @@ -53,7 +53,7 @@ # define CURL_MASK_SINT 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # define CURL_MASK_UINT 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF #else -# error "SIZEOF_INT not defined" +# error "SIZEOF_INT not defined" #endif #if (CURL_SIZEOF_LONG == 2) @@ -69,7 +69,39 @@ # define CURL_MASK_SLONG 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFL # define CURL_MASK_ULONG 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFUL #else -# error "SIZEOF_LONG not defined" +# error "CURL_SIZEOF_LONG not defined" +#endif + +#if (CURL_SIZEOF_CURL_OFF_T == 2) +# define CURL_MASK_SCOFFT CURL_OFF_T_C(0x7FFF) +# define CURL_MASK_UCOFFT CURL_OFF_TU_C(0xFFFF) +#elif (CURL_SIZEOF_CURL_OFF_T == 4) +# define CURL_MASK_SCOFFT CURL_OFF_T_C(0x7FFFFFFF) +# define CURL_MASK_UCOFFT CURL_OFF_TU_C(0xFFFFFFFF) +#elif (CURL_SIZEOF_CURL_OFF_T == 8) +# define CURL_MASK_SCOFFT CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF) +# define CURL_MASK_UCOFFT CURL_OFF_TU_C(0xFFFFFFFFFFFFFFFF) +#elif (CURL_SIZEOF_CURL_OFF_T == 16) +# define CURL_MASK_SCOFFT CURL_OFF_T_C(0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +# define CURL_MASK_UCOFFT CURL_OFF_TU_C(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) +#else +# error "CURL_SIZEOF_CURL_OFF_T not defined" +#endif + +#if (SIZEOF_SIZE_T == SIZEOF_SHORT) +# define CURL_MASK_SSIZE_T CURL_MASK_SSHORT +# define CURL_MASK_USIZE_T CURL_MASK_USHORT +#elif (SIZEOF_SIZE_T == SIZEOF_INT) +# define CURL_MASK_SSIZE_T CURL_MASK_SINT +# define CURL_MASK_USIZE_T CURL_MASK_UINT +#elif (SIZEOF_SIZE_T == CURL_SIZEOF_LONG) +# define CURL_MASK_SSIZE_T CURL_MASK_SLONG +# define CURL_MASK_USIZE_T CURL_MASK_ULONG +#elif (SIZEOF_SIZE_T == CURL_SIZEOF_CURL_OFF_T) +# define CURL_MASK_SSIZE_T CURL_MASK_SCOFFT +# define CURL_MASK_USIZE_T CURL_MASK_UCOFFT +#else +# error "SIZEOF_SIZE_T not defined" #endif /* @@ -109,7 +141,7 @@ } /* -** size_t to signed int +** unsigned size_t to signed int */ int curlx_uztosi(size_t uznum) @@ -123,5 +155,99 @@ #ifdef __INTEL_COMPILER # pragma warning(pop) +#endif +} + +/* +** signed long to signed int +*/ + +int curlx_sltosi(long slnum) +{ +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:810) /* conversion may lose significant bits */ +#endif + + DEBUGASSERT(slnum >= 0); + return (int)(slnum & (long) CURL_MASK_SINT); + +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif +} + +/* +** signed long to unsigned int +*/ + +unsigned int curlx_sltoui(long slnum) +{ +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:810) /* conversion may lose significant bits */ +#endif + + DEBUGASSERT(slnum >= 0); + return (unsigned int)(slnum & (long) CURL_MASK_UINT); + +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif +} + +/* +** signed long to unsigned short +*/ + +unsigned short curlx_sltous(long slnum) +{ +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:810) /* conversion may lose significant bits */ +#endif + + DEBUGASSERT(slnum >= 0); + return (unsigned short)(slnum & (long) CURL_MASK_USHORT); + +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif +} + +/* +** unsigned size_t to signed ssize_t +*/ + +ssize_t curlx_uztosz(size_t uznum) +{ +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:810) /* conversion may lose significant bits */ +#endif + + return (ssize_t)(uznum & (size_t) CURL_MASK_SSIZE_T); + +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif +} + +/* +** signed curl_off_t to unsigned size_t +*/ + +size_t curlx_sotouz(curl_off_t sonum) +{ +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:810) /* conversion may lose significant bits */ +#endif + + DEBUGASSERT(sonum >= 0); + return (size_t)(sonum & (curl_off_t) CURL_MASK_USIZE_T); + +#ifdef __INTEL_COMPILER +# pragma warning(pop) #endif } diff -Nru curl-7.21.2/lib/warnless.h curl-7.21.3/lib/warnless.h --- curl-7.21.2/lib/warnless.h 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/lib/warnless.h 2010-12-04 10:26:19.000000000 +0100 @@ -28,4 +28,14 @@ int curlx_uztosi(size_t uznum); +int curlx_sltosi(long slnum); + +unsigned int curlx_sltoui(long slnum); + +unsigned short curlx_sltous(long slnum); + +ssize_t curlx_uztosz(size_t uznum); + +size_t curlx_sotouz(curl_off_t sonum); + #endif /* HEADER_CURL_WARNLESS_H */ diff -Nru curl-7.21.2/m4/curl-compilers.m4 curl-7.21.3/m4/curl-compilers.m4 --- curl-7.21.2/m4/curl-compilers.m4 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/m4/curl-compilers.m4 2010-12-03 10:22:50.000000000 +0100 @@ -21,7 +21,7 @@ #*************************************************************************** # File version for 'aclocal' use. Keep it a single number. -# serial 55 +# serial 56 dnl CURL_CHECK_COMPILER diff -Nru curl-7.21.2/m4/curl-confopts.m4 curl-7.21.3/m4/curl-confopts.m4 --- curl-7.21.2/m4/curl-confopts.m4 2010-10-01 22:48:40.000000000 +0200 +++ curl-7.21.3/m4/curl-confopts.m4 2010-11-09 09:54:37.000000000 +0100 @@ -21,7 +21,7 @@ #*************************************************************************** # File version for 'aclocal' use. Keep it a single number. -# serial 13 +# serial 14 dnl CURL_CHECK_OPTION_THREADED_RESOLVER dnl ------------------------------------------------- diff -Nru curl-7.21.2/m4/curl-functions.m4 curl-7.21.3/m4/curl-functions.m4 --- curl-7.21.2/m4/curl-functions.m4 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/m4/curl-functions.m4 2010-11-10 19:41:38.000000000 +0100 @@ -21,7 +21,7 @@ #*************************************************************************** # File version for 'aclocal' use. Keep it a single number. -# serial 64 +# serial 65 dnl CURL_INCLUDES_ARPA_INET @@ -416,6 +416,26 @@ ]) +dnl CURL_INCLUDES_SYS_XATTR +dnl ------------------------------------------------- +dnl Set up variable with list of headers that must be +dnl included when sys/xattr.h is to be included. + +AC_DEFUN([CURL_INCLUDES_SYS_XATTR], [ +curl_includes_sys_xattr="\ +/* includes start */ +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_XATTR_H +# include +#endif +/* includes end */" + AC_CHECK_HEADERS( + sys/types.h sys/xattr.h, + [], [], [$curl_includes_sys_xattr]) +]) + dnl CURL_INCLUDES_TIME dnl ------------------------------------------------- dnl Set up variable with list of headers that must be @@ -1230,6 +1250,250 @@ ]) +dnl CURL_CHECK_FUNC_FGETXATTR +dnl ------------------------------------------------- +dnl Verify if fgetxattr is available, prototyped, and +dnl can be compiled. If all of these are true, and +dnl usage has not been previously disallowed with +dnl shell variable curl_disallow_fgetxattr, then +dnl HAVE_FGETXATTR will be defined. + +AC_DEFUN([CURL_CHECK_FUNC_FGETXATTR], [ + AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl + # + tst_links_fgetxattr="unknown" + tst_proto_fgetxattr="unknown" + tst_compi_fgetxattr="unknown" + tst_allow_fgetxattr="unknown" + tst_nargs_fgetxattr="unknown" + # + AC_MSG_CHECKING([if fgetxattr can be linked]) + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([fgetxattr]) + ],[ + AC_MSG_RESULT([yes]) + tst_links_fgetxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_links_fgetxattr="no" + ]) + # + if test "$tst_links_fgetxattr" = "yes"; then + AC_MSG_CHECKING([if fgetxattr is prototyped]) + AC_EGREP_CPP([fgetxattr],[ + $curl_includes_sys_xattr + ],[ + AC_MSG_RESULT([yes]) + tst_proto_fgetxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_proto_fgetxattr="no" + ]) + fi + # + if test "$tst_proto_fgetxattr" = "yes"; then + if test "$tst_nargs_fgetxattr" = "unknown"; then + AC_MSG_CHECKING([if fgetxattr takes 4 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != fgetxattr(0, 0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_fgetxattr="yes" + tst_nargs_fgetxattr="4" + ],[ + AC_MSG_RESULT([no]) + tst_compi_fgetxattr="no" + ]) + fi + if test "$tst_nargs_fgetxattr" = "unknown"; then + AC_MSG_CHECKING([if fgetxattr takes 6 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != fgetxattr(0, 0, 0, 0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_fgetxattr="yes" + tst_nargs_fgetxattr="6" + ],[ + AC_MSG_RESULT([no]) + tst_compi_fgetxattr="no" + ]) + fi + AC_MSG_CHECKING([if fgetxattr is compilable]) + if test "$tst_compi_fgetxattr" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + # + if test "$tst_compi_fgetxattr" = "yes"; then + AC_MSG_CHECKING([if fgetxattr usage allowed]) + if test "x$curl_disallow_fgetxattr" != "xyes"; then + AC_MSG_RESULT([yes]) + tst_allow_fgetxattr="yes" + else + AC_MSG_RESULT([no]) + tst_allow_fgetxattr="no" + fi + fi + # + AC_MSG_CHECKING([if fgetxattr might be used]) + if test "$tst_links_fgetxattr" = "yes" && + test "$tst_proto_fgetxattr" = "yes" && + test "$tst_compi_fgetxattr" = "yes" && + test "$tst_allow_fgetxattr" = "yes"; then + AC_MSG_RESULT([yes]) + AC_DEFINE_UNQUOTED(HAVE_FGETXATTR, 1, + [Define to 1 if you have the fgetxattr function.]) + dnl AC_DEFINE_UNQUOTED(FGETXATTR_ARGS, $tst_nargs_fgetxattr, + dnl [Specifies the number of arguments to fgetxattr]) + # + if test "$tst_nargs_fgetxattr" -eq "4"; then + AC_DEFINE(HAVE_FGETXATTR_4, 1, [fgetxattr() takes 4 args]) + elif test "$tst_nargs_fgetxattr" -eq "6"; then + AC_DEFINE(HAVE_FGETXATTR_6, 1, [fgetxattr() takes 6 args]) + fi + # + ac_cv_func_fgetxattr="yes" + else + AC_MSG_RESULT([no]) + ac_cv_func_fgetxattr="no" + fi +]) + + +dnl CURL_CHECK_FUNC_FLISTXATTR +dnl ------------------------------------------------- +dnl Verify if flistxattr is available, prototyped, and +dnl can be compiled. If all of these are true, and +dnl usage has not been previously disallowed with +dnl shell variable curl_disallow_flistxattr, then +dnl HAVE_FLISTXATTR will be defined. + +AC_DEFUN([CURL_CHECK_FUNC_FLISTXATTR], [ + AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl + # + tst_links_flistxattr="unknown" + tst_proto_flistxattr="unknown" + tst_compi_flistxattr="unknown" + tst_allow_flistxattr="unknown" + tst_nargs_flistxattr="unknown" + # + AC_MSG_CHECKING([if flistxattr can be linked]) + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([flistxattr]) + ],[ + AC_MSG_RESULT([yes]) + tst_links_flistxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_links_flistxattr="no" + ]) + # + if test "$tst_links_flistxattr" = "yes"; then + AC_MSG_CHECKING([if flistxattr is prototyped]) + AC_EGREP_CPP([flistxattr],[ + $curl_includes_sys_xattr + ],[ + AC_MSG_RESULT([yes]) + tst_proto_flistxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_proto_flistxattr="no" + ]) + fi + # + if test "$tst_proto_flistxattr" = "yes"; then + if test "$tst_nargs_flistxattr" = "unknown"; then + AC_MSG_CHECKING([if flistxattr takes 3 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != flistxattr(0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_flistxattr="yes" + tst_nargs_flistxattr="3" + ],[ + AC_MSG_RESULT([no]) + tst_compi_flistxattr="no" + ]) + fi + if test "$tst_nargs_flistxattr" = "unknown"; then + AC_MSG_CHECKING([if flistxattr takes 4 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != flistxattr(0, 0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_flistxattr="yes" + tst_nargs_flistxattr="4" + ],[ + AC_MSG_RESULT([no]) + tst_compi_flistxattr="no" + ]) + fi + AC_MSG_CHECKING([if flistxattr is compilable]) + if test "$tst_compi_flistxattr" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + # + if test "$tst_compi_flistxattr" = "yes"; then + AC_MSG_CHECKING([if flistxattr usage allowed]) + if test "x$curl_disallow_flistxattr" != "xyes"; then + AC_MSG_RESULT([yes]) + tst_allow_flistxattr="yes" + else + AC_MSG_RESULT([no]) + tst_allow_flistxattr="no" + fi + fi + # + AC_MSG_CHECKING([if flistxattr might be used]) + if test "$tst_links_flistxattr" = "yes" && + test "$tst_proto_flistxattr" = "yes" && + test "$tst_compi_flistxattr" = "yes" && + test "$tst_allow_flistxattr" = "yes"; then + AC_MSG_RESULT([yes]) + AC_DEFINE_UNQUOTED(HAVE_FLISTXATTR, 1, + [Define to 1 if you have the flistxattr function.]) + dnl AC_DEFINE_UNQUOTED(FLISTXATTR_ARGS, $tst_nargs_flistxattr, + dnl [Specifies the number of arguments to flistxattr]) + # + if test "$tst_nargs_flistxattr" -eq "3"; then + AC_DEFINE(HAVE_FLISTXATTR_3, 1, [flistxattr() takes 3 args]) + elif test "$tst_nargs_flistxattr" -eq "4"; then + AC_DEFINE(HAVE_FLISTXATTR_4, 1, [flistxattr() takes 4 args]) + fi + # + ac_cv_func_flistxattr="yes" + else + AC_MSG_RESULT([no]) + ac_cv_func_flistxattr="no" + fi +]) + + dnl CURL_CHECK_FUNC_FREEADDRINFO dnl ------------------------------------------------- dnl Verify if freeaddrinfo is available, prototyped, @@ -1410,6 +1674,250 @@ ]) +dnl CURL_CHECK_FUNC_FREMOVEXATTR +dnl ------------------------------------------------- +dnl Verify if fremovexattr is available, prototyped, and +dnl can be compiled. If all of these are true, and +dnl usage has not been previously disallowed with +dnl shell variable curl_disallow_fremovexattr, then +dnl HAVE_FREMOVEXATTR will be defined. + +AC_DEFUN([CURL_CHECK_FUNC_FREMOVEXATTR], [ + AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl + # + tst_links_fremovexattr="unknown" + tst_proto_fremovexattr="unknown" + tst_compi_fremovexattr="unknown" + tst_allow_fremovexattr="unknown" + tst_nargs_fremovexattr="unknown" + # + AC_MSG_CHECKING([if fremovexattr can be linked]) + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([fremovexattr]) + ],[ + AC_MSG_RESULT([yes]) + tst_links_fremovexattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_links_fremovexattr="no" + ]) + # + if test "$tst_links_fremovexattr" = "yes"; then + AC_MSG_CHECKING([if fremovexattr is prototyped]) + AC_EGREP_CPP([fremovexattr],[ + $curl_includes_sys_xattr + ],[ + AC_MSG_RESULT([yes]) + tst_proto_fremovexattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_proto_fremovexattr="no" + ]) + fi + # + if test "$tst_proto_fremovexattr" = "yes"; then + if test "$tst_nargs_fremovexattr" = "unknown"; then + AC_MSG_CHECKING([if fremovexattr takes 2 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != fremovexattr(0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_fremovexattr="yes" + tst_nargs_fremovexattr="2" + ],[ + AC_MSG_RESULT([no]) + tst_compi_fremovexattr="no" + ]) + fi + if test "$tst_nargs_fremovexattr" = "unknown"; then + AC_MSG_CHECKING([if fremovexattr takes 3 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != fremovexattr(0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_fremovexattr="yes" + tst_nargs_fremovexattr="3" + ],[ + AC_MSG_RESULT([no]) + tst_compi_fremovexattr="no" + ]) + fi + AC_MSG_CHECKING([if fremovexattr is compilable]) + if test "$tst_compi_fremovexattr" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + # + if test "$tst_compi_fremovexattr" = "yes"; then + AC_MSG_CHECKING([if fremovexattr usage allowed]) + if test "x$curl_disallow_fremovexattr" != "xyes"; then + AC_MSG_RESULT([yes]) + tst_allow_fremovexattr="yes" + else + AC_MSG_RESULT([no]) + tst_allow_fremovexattr="no" + fi + fi + # + AC_MSG_CHECKING([if fremovexattr might be used]) + if test "$tst_links_fremovexattr" = "yes" && + test "$tst_proto_fremovexattr" = "yes" && + test "$tst_compi_fremovexattr" = "yes" && + test "$tst_allow_fremovexattr" = "yes"; then + AC_MSG_RESULT([yes]) + AC_DEFINE_UNQUOTED(HAVE_FREMOVEXATTR, 1, + [Define to 1 if you have the fremovexattr function.]) + dnl AC_DEFINE_UNQUOTED(FREMOVEXATTR_ARGS, $tst_nargs_fremovexattr, + dnl [Specifies the number of arguments to fremovexattr]) + # + if test "$tst_nargs_fremovexattr" -eq "2"; then + AC_DEFINE(HAVE_FREMOVEXATTR_2, 1, [fremovexattr() takes 2 args]) + elif test "$tst_nargs_fremovexattr" -eq "3"; then + AC_DEFINE(HAVE_FREMOVEXATTR_3, 1, [fremovexattr() takes 3 args]) + fi + # + ac_cv_func_fremovexattr="yes" + else + AC_MSG_RESULT([no]) + ac_cv_func_fremovexattr="no" + fi +]) + + +dnl CURL_CHECK_FUNC_FSETXATTR +dnl ------------------------------------------------- +dnl Verify if fsetxattr is available, prototyped, and +dnl can be compiled. If all of these are true, and +dnl usage has not been previously disallowed with +dnl shell variable curl_disallow_fsetxattr, then +dnl HAVE_FSETXATTR will be defined. + +AC_DEFUN([CURL_CHECK_FUNC_FSETXATTR], [ + AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl + # + tst_links_fsetxattr="unknown" + tst_proto_fsetxattr="unknown" + tst_compi_fsetxattr="unknown" + tst_allow_fsetxattr="unknown" + tst_nargs_fsetxattr="unknown" + # + AC_MSG_CHECKING([if fsetxattr can be linked]) + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([fsetxattr]) + ],[ + AC_MSG_RESULT([yes]) + tst_links_fsetxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_links_fsetxattr="no" + ]) + # + if test "$tst_links_fsetxattr" = "yes"; then + AC_MSG_CHECKING([if fsetxattr is prototyped]) + AC_EGREP_CPP([fsetxattr],[ + $curl_includes_sys_xattr + ],[ + AC_MSG_RESULT([yes]) + tst_proto_fsetxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_proto_fsetxattr="no" + ]) + fi + # + if test "$tst_proto_fsetxattr" = "yes"; then + if test "$tst_nargs_fsetxattr" = "unknown"; then + AC_MSG_CHECKING([if fsetxattr takes 5 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != fsetxattr(0, 0, 0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_fsetxattr="yes" + tst_nargs_fsetxattr="5" + ],[ + AC_MSG_RESULT([no]) + tst_compi_fsetxattr="no" + ]) + fi + if test "$tst_nargs_fsetxattr" = "unknown"; then + AC_MSG_CHECKING([if fsetxattr takes 6 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != fsetxattr(0, 0, 0, 0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_fsetxattr="yes" + tst_nargs_fsetxattr="6" + ],[ + AC_MSG_RESULT([no]) + tst_compi_fsetxattr="no" + ]) + fi + AC_MSG_CHECKING([if fsetxattr is compilable]) + if test "$tst_compi_fsetxattr" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + # + if test "$tst_compi_fsetxattr" = "yes"; then + AC_MSG_CHECKING([if fsetxattr usage allowed]) + if test "x$curl_disallow_fsetxattr" != "xyes"; then + AC_MSG_RESULT([yes]) + tst_allow_fsetxattr="yes" + else + AC_MSG_RESULT([no]) + tst_allow_fsetxattr="no" + fi + fi + # + AC_MSG_CHECKING([if fsetxattr might be used]) + if test "$tst_links_fsetxattr" = "yes" && + test "$tst_proto_fsetxattr" = "yes" && + test "$tst_compi_fsetxattr" = "yes" && + test "$tst_allow_fsetxattr" = "yes"; then + AC_MSG_RESULT([yes]) + AC_DEFINE_UNQUOTED(HAVE_FSETXATTR, 1, + [Define to 1 if you have the fsetxattr function.]) + dnl AC_DEFINE_UNQUOTED(FSETXATTR_ARGS, $tst_nargs_fsetxattr, + dnl [Specifies the number of arguments to fsetxattr]) + # + if test "$tst_nargs_fsetxattr" -eq "5"; then + AC_DEFINE(HAVE_FSETXATTR_5, 1, [fsetxattr() takes 5 args]) + elif test "$tst_nargs_fsetxattr" -eq "6"; then + AC_DEFINE(HAVE_FSETXATTR_6, 1, [fsetxattr() takes 6 args]) + fi + # + ac_cv_func_fsetxattr="yes" + else + AC_MSG_RESULT([no]) + ac_cv_func_fsetxattr="no" + fi +]) + + dnl CURL_CHECK_FUNC_FTRUNCATE dnl ------------------------------------------------- dnl Verify if ftruncate is available, prototyped, and @@ -2535,6 +3043,128 @@ ]) +dnl CURL_CHECK_FUNC_GETXATTR +dnl ------------------------------------------------- +dnl Verify if getxattr is available, prototyped, and +dnl can be compiled. If all of these are true, and +dnl usage has not been previously disallowed with +dnl shell variable curl_disallow_getxattr, then +dnl HAVE_GETXATTR will be defined. + +AC_DEFUN([CURL_CHECK_FUNC_GETXATTR], [ + AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl + # + tst_links_getxattr="unknown" + tst_proto_getxattr="unknown" + tst_compi_getxattr="unknown" + tst_allow_getxattr="unknown" + tst_nargs_getxattr="unknown" + # + AC_MSG_CHECKING([if getxattr can be linked]) + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([getxattr]) + ],[ + AC_MSG_RESULT([yes]) + tst_links_getxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_links_getxattr="no" + ]) + # + if test "$tst_links_getxattr" = "yes"; then + AC_MSG_CHECKING([if getxattr is prototyped]) + AC_EGREP_CPP([getxattr],[ + $curl_includes_sys_xattr + ],[ + AC_MSG_RESULT([yes]) + tst_proto_getxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_proto_getxattr="no" + ]) + fi + # + if test "$tst_proto_getxattr" = "yes"; then + if test "$tst_nargs_getxattr" = "unknown"; then + AC_MSG_CHECKING([if getxattr takes 4 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != getxattr(0, 0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_getxattr="yes" + tst_nargs_getxattr="4" + ],[ + AC_MSG_RESULT([no]) + tst_compi_getxattr="no" + ]) + fi + if test "$tst_nargs_getxattr" = "unknown"; then + AC_MSG_CHECKING([if getxattr takes 6 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != getxattr(0, 0, 0, 0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_getxattr="yes" + tst_nargs_getxattr="6" + ],[ + AC_MSG_RESULT([no]) + tst_compi_getxattr="no" + ]) + fi + AC_MSG_CHECKING([if getxattr is compilable]) + if test "$tst_compi_getxattr" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + # + if test "$tst_compi_getxattr" = "yes"; then + AC_MSG_CHECKING([if getxattr usage allowed]) + if test "x$curl_disallow_getxattr" != "xyes"; then + AC_MSG_RESULT([yes]) + tst_allow_getxattr="yes" + else + AC_MSG_RESULT([no]) + tst_allow_getxattr="no" + fi + fi + # + AC_MSG_CHECKING([if getxattr might be used]) + if test "$tst_links_getxattr" = "yes" && + test "$tst_proto_getxattr" = "yes" && + test "$tst_compi_getxattr" = "yes" && + test "$tst_allow_getxattr" = "yes"; then + AC_MSG_RESULT([yes]) + AC_DEFINE_UNQUOTED(HAVE_GETXATTR, 1, + [Define to 1 if you have the getxattr function.]) + dnl AC_DEFINE_UNQUOTED(GETXATTR_ARGS, $tst_nargs_getxattr, + dnl [Specifies the number of arguments to getxattr]) + # + if test "$tst_nargs_getxattr" -eq "4"; then + AC_DEFINE(HAVE_GETXATTR_4, 1, [getxattr() takes 4 args]) + elif test "$tst_nargs_getxattr" -eq "6"; then + AC_DEFINE(HAVE_GETXATTR_6, 1, [getxattr() takes 6 args]) + fi + # + ac_cv_func_getxattr="yes" + else + AC_MSG_RESULT([no]) + ac_cv_func_getxattr="no" + fi +]) + + dnl CURL_CHECK_FUNC_GMTIME_R dnl ------------------------------------------------- dnl Verify if gmtime_r is available, prototyped, can @@ -3574,6 +4204,128 @@ ]) +dnl CURL_CHECK_FUNC_LISTXATTR +dnl ------------------------------------------------- +dnl Verify if listxattr is available, prototyped, and +dnl can be compiled. If all of these are true, and +dnl usage has not been previously disallowed with +dnl shell variable curl_disallow_listxattr, then +dnl HAVE_LISTXATTR will be defined. + +AC_DEFUN([CURL_CHECK_FUNC_LISTXATTR], [ + AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl + # + tst_links_listxattr="unknown" + tst_proto_listxattr="unknown" + tst_compi_listxattr="unknown" + tst_allow_listxattr="unknown" + tst_nargs_listxattr="unknown" + # + AC_MSG_CHECKING([if listxattr can be linked]) + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([listxattr]) + ],[ + AC_MSG_RESULT([yes]) + tst_links_listxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_links_listxattr="no" + ]) + # + if test "$tst_links_listxattr" = "yes"; then + AC_MSG_CHECKING([if listxattr is prototyped]) + AC_EGREP_CPP([listxattr],[ + $curl_includes_sys_xattr + ],[ + AC_MSG_RESULT([yes]) + tst_proto_listxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_proto_listxattr="no" + ]) + fi + # + if test "$tst_proto_listxattr" = "yes"; then + if test "$tst_nargs_listxattr" = "unknown"; then + AC_MSG_CHECKING([if listxattr takes 3 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != listxattr(0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_listxattr="yes" + tst_nargs_listxattr="3" + ],[ + AC_MSG_RESULT([no]) + tst_compi_listxattr="no" + ]) + fi + if test "$tst_nargs_listxattr" = "unknown"; then + AC_MSG_CHECKING([if listxattr takes 4 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != listxattr(0, 0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_listxattr="yes" + tst_nargs_listxattr="4" + ],[ + AC_MSG_RESULT([no]) + tst_compi_listxattr="no" + ]) + fi + AC_MSG_CHECKING([if listxattr is compilable]) + if test "$tst_compi_listxattr" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + # + if test "$tst_compi_listxattr" = "yes"; then + AC_MSG_CHECKING([if listxattr usage allowed]) + if test "x$curl_disallow_listxattr" != "xyes"; then + AC_MSG_RESULT([yes]) + tst_allow_listxattr="yes" + else + AC_MSG_RESULT([no]) + tst_allow_listxattr="no" + fi + fi + # + AC_MSG_CHECKING([if listxattr might be used]) + if test "$tst_links_listxattr" = "yes" && + test "$tst_proto_listxattr" = "yes" && + test "$tst_compi_listxattr" = "yes" && + test "$tst_allow_listxattr" = "yes"; then + AC_MSG_RESULT([yes]) + AC_DEFINE_UNQUOTED(HAVE_LISTXATTR, 1, + [Define to 1 if you have the listxattr function.]) + dnl AC_DEFINE_UNQUOTED(LISTXATTR_ARGS, $tst_nargs_listxattr, + dnl [Specifies the number of arguments to listxattr]) + # + if test "$tst_nargs_listxattr" -eq "3"; then + AC_DEFINE(HAVE_LISTXATTR_3, 1, [listxattr() takes 3 args]) + elif test "$tst_nargs_listxattr" -eq "4"; then + AC_DEFINE(HAVE_LISTXATTR_4, 1, [listxattr() takes 4 args]) + fi + # + ac_cv_func_listxattr="yes" + else + AC_MSG_RESULT([no]) + ac_cv_func_listxattr="no" + fi +]) + + dnl CURL_CHECK_FUNC_LOCALTIME_R dnl ------------------------------------------------- dnl Verify if localtime_r is available, prototyped, can @@ -3924,6 +4676,128 @@ ]) +dnl CURL_CHECK_FUNC_REMOVEXATTR +dnl ------------------------------------------------- +dnl Verify if removexattr is available, prototyped, and +dnl can be compiled. If all of these are true, and +dnl usage has not been previously disallowed with +dnl shell variable curl_disallow_removexattr, then +dnl HAVE_REMOVEXATTR will be defined. + +AC_DEFUN([CURL_CHECK_FUNC_REMOVEXATTR], [ + AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl + # + tst_links_removexattr="unknown" + tst_proto_removexattr="unknown" + tst_compi_removexattr="unknown" + tst_allow_removexattr="unknown" + tst_nargs_removexattr="unknown" + # + AC_MSG_CHECKING([if removexattr can be linked]) + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([removexattr]) + ],[ + AC_MSG_RESULT([yes]) + tst_links_removexattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_links_removexattr="no" + ]) + # + if test "$tst_links_removexattr" = "yes"; then + AC_MSG_CHECKING([if removexattr is prototyped]) + AC_EGREP_CPP([removexattr],[ + $curl_includes_sys_xattr + ],[ + AC_MSG_RESULT([yes]) + tst_proto_removexattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_proto_removexattr="no" + ]) + fi + # + if test "$tst_proto_removexattr" = "yes"; then + if test "$tst_nargs_removexattr" = "unknown"; then + AC_MSG_CHECKING([if removexattr takes 2 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != removexattr(0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_removexattr="yes" + tst_nargs_removexattr="2" + ],[ + AC_MSG_RESULT([no]) + tst_compi_removexattr="no" + ]) + fi + if test "$tst_nargs_removexattr" = "unknown"; then + AC_MSG_CHECKING([if removexattr takes 3 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != removexattr(0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_removexattr="yes" + tst_nargs_removexattr="3" + ],[ + AC_MSG_RESULT([no]) + tst_compi_removexattr="no" + ]) + fi + AC_MSG_CHECKING([if removexattr is compilable]) + if test "$tst_compi_removexattr" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + # + if test "$tst_compi_removexattr" = "yes"; then + AC_MSG_CHECKING([if removexattr usage allowed]) + if test "x$curl_disallow_removexattr" != "xyes"; then + AC_MSG_RESULT([yes]) + tst_allow_removexattr="yes" + else + AC_MSG_RESULT([no]) + tst_allow_removexattr="no" + fi + fi + # + AC_MSG_CHECKING([if removexattr might be used]) + if test "$tst_links_removexattr" = "yes" && + test "$tst_proto_removexattr" = "yes" && + test "$tst_compi_removexattr" = "yes" && + test "$tst_allow_removexattr" = "yes"; then + AC_MSG_RESULT([yes]) + AC_DEFINE_UNQUOTED(HAVE_REMOVEXATTR, 1, + [Define to 1 if you have the removexattr function.]) + dnl AC_DEFINE_UNQUOTED(REMOVEXATTR_ARGS, $tst_nargs_removexattr, + dnl [Specifies the number of arguments to removexattr]) + # + if test "$tst_nargs_removexattr" -eq "2"; then + AC_DEFINE(HAVE_REMOVEXATTR_2, 1, [removexattr() takes 2 args]) + elif test "$tst_nargs_removexattr" -eq "3"; then + AC_DEFINE(HAVE_REMOVEXATTR_3, 1, [removexattr() takes 3 args]) + fi + # + ac_cv_func_removexattr="yes" + else + AC_MSG_RESULT([no]) + ac_cv_func_removexattr="no" + fi +]) + + dnl CURL_CHECK_FUNC_SETSOCKOPT dnl ------------------------------------------------- dnl Verify if setsockopt is available, prototyped, and @@ -4074,6 +4948,128 @@ fi ]) + +dnl CURL_CHECK_FUNC_SETXATTR +dnl ------------------------------------------------- +dnl Verify if setxattr is available, prototyped, and +dnl can be compiled. If all of these are true, and +dnl usage has not been previously disallowed with +dnl shell variable curl_disallow_setxattr, then +dnl HAVE_SETXATTR will be defined. + +AC_DEFUN([CURL_CHECK_FUNC_SETXATTR], [ + AC_REQUIRE([CURL_INCLUDES_SYS_XATTR])dnl + # + tst_links_setxattr="unknown" + tst_proto_setxattr="unknown" + tst_compi_setxattr="unknown" + tst_allow_setxattr="unknown" + tst_nargs_setxattr="unknown" + # + AC_MSG_CHECKING([if setxattr can be linked]) + AC_LINK_IFELSE([ + AC_LANG_FUNC_LINK_TRY([setxattr]) + ],[ + AC_MSG_RESULT([yes]) + tst_links_setxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_links_setxattr="no" + ]) + # + if test "$tst_links_setxattr" = "yes"; then + AC_MSG_CHECKING([if setxattr is prototyped]) + AC_EGREP_CPP([setxattr],[ + $curl_includes_sys_xattr + ],[ + AC_MSG_RESULT([yes]) + tst_proto_setxattr="yes" + ],[ + AC_MSG_RESULT([no]) + tst_proto_setxattr="no" + ]) + fi + # + if test "$tst_proto_setxattr" = "yes"; then + if test "$tst_nargs_setxattr" = "unknown"; then + AC_MSG_CHECKING([if setxattr takes 5 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != setxattr(0, 0, 0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_setxattr="yes" + tst_nargs_setxattr="5" + ],[ + AC_MSG_RESULT([no]) + tst_compi_setxattr="no" + ]) + fi + if test "$tst_nargs_setxattr" = "unknown"; then + AC_MSG_CHECKING([if setxattr takes 6 args.]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ + $curl_includes_sys_xattr + ]],[[ + if(0 != setxattr(0, 0, 0, 0, 0, 0)) + return 1; + ]]) + ],[ + AC_MSG_RESULT([yes]) + tst_compi_setxattr="yes" + tst_nargs_setxattr="6" + ],[ + AC_MSG_RESULT([no]) + tst_compi_setxattr="no" + ]) + fi + AC_MSG_CHECKING([if setxattr is compilable]) + if test "$tst_compi_setxattr" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + # + if test "$tst_compi_setxattr" = "yes"; then + AC_MSG_CHECKING([if setxattr usage allowed]) + if test "x$curl_disallow_setxattr" != "xyes"; then + AC_MSG_RESULT([yes]) + tst_allow_setxattr="yes" + else + AC_MSG_RESULT([no]) + tst_allow_setxattr="no" + fi + fi + # + AC_MSG_CHECKING([if setxattr might be used]) + if test "$tst_links_setxattr" = "yes" && + test "$tst_proto_setxattr" = "yes" && + test "$tst_compi_setxattr" = "yes" && + test "$tst_allow_setxattr" = "yes"; then + AC_MSG_RESULT([yes]) + AC_DEFINE_UNQUOTED(HAVE_SETXATTR, 1, + [Define to 1 if you have the setxattr function.]) + dnl AC_DEFINE_UNQUOTED(SETXATTR_ARGS, $tst_nargs_setxattr, + dnl [Specifies the number of arguments to setxattr]) + # + if test "$tst_nargs_setxattr" -eq "5"; then + AC_DEFINE(HAVE_SETXATTR_5, 1, [setxattr() takes 5 args]) + elif test "$tst_nargs_setxattr" -eq "6"; then + AC_DEFINE(HAVE_SETXATTR_6, 1, [setxattr() takes 6 args]) + fi + # + ac_cv_func_setxattr="yes" + else + AC_MSG_RESULT([no]) + ac_cv_func_setxattr="no" + fi +]) + dnl CURL_CHECK_FUNC_SIGACTION dnl ------------------------------------------------- diff -Nru curl-7.21.2/Makefile curl-7.21.3/Makefile --- curl-7.21.2/Makefile 2010-10-13 00:04:32.000000000 +0200 +++ curl-7.21.3/Makefile 2010-12-15 15:08:04.000000000 +0100 @@ -55,22 +55,16 @@ make -f Makefile.b32 clean watcom: .SYMBOLIC - cd lib - wmake -u -f Makefile.Watcom - cd ..\src - wmake -u -f Makefile.Watcom + cd lib && $(MAKE) -u -f Makefile.Watcom + cd src && $(MAKE) -u -f Makefile.Watcom watcom-clean: .SYMBOLIC - cd lib - wmake -u -f Makefile.Watcom clean - cd ..\src - wmake -u -f Makefile.Watcom clean + cd lib && $(MAKE) -u -f Makefile.Watcom clean + cd src && $(MAKE) -u -f Makefile.Watcom clean watcom-vclean: .SYMBOLIC - cd lib - wmake -u -f Makefile.Watcom vclean - cd ..\src - wmake -u -f Makefile.Watcom vclean + cd lib && $(MAKE) -u -f Makefile.Watcom vclean + cd src && $(MAKE) -u -f Makefile.Watcom vclean mingw32: $(MAKE) -C lib -f Makefile.m32 @@ -92,6 +86,10 @@ $(MAKE) -C lib -f Makefile.m32 SSH2=1 SSL=1 SSPI=1 ZLIB=1 $(MAKE) -C src -f Makefile.m32 SSH2=1 SSL=1 SSPI=1 ZLIB=1 +mingw32-rtmp-ssh2-ssl-sspi-zlib: + $(MAKE) -C lib -f Makefile.m32 RTMP=1 SSH2=1 SSL=1 SSPI=1 ZLIB=1 + $(MAKE) -C src -f Makefile.m32 RTMP=1 SSH2=1 SSL=1 SSPI=1 ZLIB=1 + mingw32-clean: $(MAKE) -C lib -f Makefile.m32 clean $(MAKE) -C src -f Makefile.m32 clean diff -Nru curl-7.21.2/packages/AIX/Makefile.in curl-7.21.3/packages/AIX/Makefile.in --- curl-7.21.2/packages/AIX/Makefile.in 2010-10-01 22:49:19.000000000 +0200 +++ curl-7.21.3/packages/AIX/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -262,9 +262,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/AIX/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/AIX/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign packages/AIX/Makefile + $(AUTOMAKE) --gnu packages/AIX/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/packages/AIX/RPM/Makefile.in curl-7.21.3/packages/AIX/RPM/Makefile.in --- curl-7.21.2/packages/AIX/RPM/Makefile.in 2010-10-01 22:49:19.000000000 +0200 +++ curl-7.21.3/packages/AIX/RPM/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -253,9 +253,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/AIX/RPM/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/AIX/RPM/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign packages/AIX/RPM/Makefile + $(AUTOMAKE) --gnu packages/AIX/RPM/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/packages/Linux/Makefile.in curl-7.21.3/packages/Linux/Makefile.in --- curl-7.21.2/packages/Linux/Makefile.in 2010-10-01 22:49:19.000000000 +0200 +++ curl-7.21.3/packages/Linux/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -261,9 +261,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Linux/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/Linux/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign packages/Linux/Makefile + $(AUTOMAKE) --gnu packages/Linux/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/packages/Linux/RPM/Makefile.in curl-7.21.3/packages/Linux/RPM/Makefile.in --- curl-7.21.2/packages/Linux/RPM/Makefile.in 2010-10-01 22:49:19.000000000 +0200 +++ curl-7.21.3/packages/Linux/RPM/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -253,9 +253,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Linux/RPM/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/Linux/RPM/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign packages/Linux/RPM/Makefile + $(AUTOMAKE) --gnu packages/Linux/RPM/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/packages/Makefile.in curl-7.21.3/packages/Makefile.in --- curl-7.21.2/packages/Makefile.in 2010-10-01 22:49:19.000000000 +0200 +++ curl-7.21.3/packages/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -291,9 +291,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign packages/Makefile + $(AUTOMAKE) --gnu packages/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/packages/Solaris/Makefile.in curl-7.21.3/packages/Solaris/Makefile.in --- curl-7.21.2/packages/Solaris/Makefile.in 2010-10-01 22:49:19.000000000 +0200 +++ curl-7.21.3/packages/Solaris/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -259,9 +259,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Solaris/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/Solaris/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign packages/Solaris/Makefile + $(AUTOMAKE) --gnu packages/Solaris/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/packages/Symbian/group/curl.mmp curl-7.21.3/packages/Symbian/group/curl.mmp --- curl-7.21.2/packages/Symbian/group/curl.mmp 2010-03-20 22:51:44.000000000 +0100 +++ curl-7.21.3/packages/Symbian/group/curl.mmp 2010-11-08 08:56:20.000000000 +0100 @@ -9,7 +9,7 @@ SOURCEPATH ../../../src SOURCE \ main.c hugehelp.c urlglob.c writeout.c writeenv.c \ - getpass.c homedir.c curlutil.c + getpass.c homedir.c curlutil.c os-specific.c xattr.c SOURCEPATH ../../../lib SOURCE \ diff -Nru curl-7.21.2/packages/vms/build_vms.com curl-7.21.3/packages/vms/build_vms.com --- curl-7.21.2/packages/vms/build_vms.com 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/packages/vms/build_vms.com 2010-12-03 10:22:50.000000000 +0100 @@ -426,7 +426,7 @@ $! $! Copy the VMS-specific config file into the product directory. $! -$ call MoveIfDiff 'proc_dev_dir'config-vms.h 'objdir'curl_config.h +$ call MoveIfDiff 'top_dev_dir'.lib]config-vms.h 'objdir'curl_config.h $! $ on control_y then goto Common_Exit $! diff -Nru curl-7.21.2/packages/vms/config-vms.h curl-7.21.3/packages/vms/config-vms.h --- curl-7.21.2/packages/vms/config-vms.h 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/packages/vms/config-vms.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,371 +0,0 @@ -#ifndef HEADER_CONFIG_VMS_H -#define HEADER_CONFIG_VMS_H - -/* */ -/* MSK, 02/05/04, Hand edited for trail build on Alpha V7.3, DEC C 6.5-003 */ -/* MSK, 03/09/04, Seems to work for all platforms I've built on so far. */ -/* Added HAVE_SYS_IOCTL_H define */ -/* TES, 10/06/04, Added MAX_INITIAL_POST_SIZE, HAVE_BASENAME */ -/* MSK, 02/02/05, Changed HAVE_TERMIOS_H to an undef since the change in */ -/* getpass.c no longer undef'd it during compile. */ -/* MSK, 02/08/05, turned two config-vms files into one by using USE_SSLEAY */ -/* MPZ, 12/28/05, changed HAVE_STRTOK_R define to use CRTL_VER */ -/* MSK, 01/27/07, needed to add HAVE_STRUCT_TIMEVAL define */ - -/* Define cpu-machine-OS */ -#if defined(__alpha) -# define OS "ALPHA-HP-VMS" -#elif defined(__vax) -# define OS "VAX-HP-VMS" -#elif defined(__ia64) -# define OS "IA64-HP-VMS" -#else -# define OS "UNKNOWN-HP-VMS" -#endif - -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Define if you can safely include both and . */ -#define TIME_WITH_SYS_TIME 1 - -/* The size of `int', as computed by sizeof. */ -#define SIZEOF_INT 4 - -/* The size of `long double', as computed by sizeof. */ -#define SIZEOF_LONG_DOUBLE 8 - -/* The size of `long long', as computed by sizeof. */ -#define SIZEOF_LONG_LONG 8 - -/* The size of `short', as computed by sizeof. */ -#define SIZEOF_SHORT 2 - -/* Define if you have the alarm function. */ -#define HAVE_ALARM 1 - -/* Define if you have the geteuid function. */ -#define HAVE_GETEUID 1 - -/* Define if you have the basename function. */ -#define HAVE_BASENAME 1 - -/* Define if you have the gethostbyaddr function. */ -#define HAVE_GETHOSTBYADDR 1 - -/* Define if you have the gethostname function. */ -#define HAVE_GETHOSTNAME 1 - -/* Define if you have the getpwuid function. */ -#define HAVE_GETPWUID 1 - -/* Define if you have the getservbyname function. */ -#define HAVE_GETSERVBYNAME 1 - -/* Define if you have the gettimeofday function. */ -#define HAVE_GETTIMEOFDAY 1 - -/* Define if you have the inet_addr function. */ -#define HAVE_INET_ADDR 1 - -/* Define if you have the ioctl function. */ -#define HAVE_IOCTL 1 - -/* Define if you have a working ioctl FIONBIO function. */ -#define HAVE_IOCTL_FIONBIO 1 - -/* Define if you have a working ioctl SIOCGIFADDR function. */ -#define HAVE_IOCTL_SIOCGIFADDR 1 - -/* Define if you have the perror function. */ -#define HAVE_PERROR 1 - -/* Define if you have the select function. */ -#define HAVE_SELECT 1 - -/* Define if you have the setvbuf function. */ -#define HAVE_SETVBUF 1 - -/* Define if you have the sigaction function. */ -#define HAVE_SIGACTION 1 - -/* Define if you have the signal function. */ -#define HAVE_SIGNAL 1 - -/* Define if you have the socket function. */ -#define HAVE_SOCKET 1 - -/* Define if you have the strcasecmp function. */ -#define HAVE_STRCASECMP 1 - -/* Define if you have the strcmpi function. */ -/* #define HAVE_STRCMPI 1 */ - -/* Define if you have the strdup function. */ -#define HAVE_STRDUP 1 - -/* Define if you have the strftime function. */ -#define HAVE_STRFTIME 1 - -/* Define if you have the stricmp function. */ -/* #define HAVE_STRICMP 1 */ - -/* Define if you have the strstr function. */ -#define HAVE_STRSTR 1 - -/* Define if you have the ftruncate function. */ -#define HAVE_FTRUNCATE 1 - -/* Define if you have the uname function. */ -#define HAVE_UNAME 1 - -/* Define if you have the header file. */ -#define HAVE_ERR_H 1 - -/* Define if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define if you have the header file. */ -#define HAVE_GETOPT_H 1 - -/* Define if you have the header file. */ -#define HAVE_MALLOC_H 1 - -/* Define if you need the malloc.h header header file even with stdlib.h */ -/* #define NEED_MALLOC_H 1 */ - -/* Define if you have the header file. */ -#define HAVE_NET_IF_H 1 - -/* Define if you have the header file. */ -#define HAVE_NETDB_H 1 - -/* Define if you have the header file. */ -#define HAVE_NETINET_IF_ETHER_H 1 - -/* Define if you have the header file. */ -#define HAVE_NETINET_IN_H 1 - -/* OpenSSL section starts here */ - -/* Define if you have a working OpenSSL installation */ -#ifdef USE_SSLEAY - -/* if OpenSSL is in use */ -#define USE_OPENSSL 1 - -/* Define if you have the crypto library (-lcrypto). */ -#define HAVE_LIBCRYPTO 1 - -/* Define if you have the ssl library (-lssl). */ -#define HAVE_LIBSSL 1 - -/* Define if you have the header file. */ -#define HAVE_OPENSSL_CRYPTO_H 1 - -/* Define if you have the header file. */ -#define HAVE_OPENSSL_ERR_H 1 - -/* Define if you have the header file. */ -#define HAVE_OPENSSL_PEM_H 1 - -/* Define if you have the header file. */ -#define HAVE_OPENSSL_RSA_H 1 - -/* Define if you have the header file. */ -#define HAVE_OPENSSL_SSL_H 1 - -/* Define if you have the header file. */ -#define HAVE_OPENSSL_X509_H 1 - -/* - * This needs to be defined for OpenSSL 0.9.7 and other versions that have the - * ENGINE stuff supported. If an include of "openssl/engine.h" fails, then - * undefine the define below. -*/ -#define HAVE_OPENSSL_ENGINE_H 1 - -#endif /* USE_SSLEAY */ -/* OpenSSL section ends here */ - -/* Define if you have the header file. */ -#define HAVE_PWD_H 1 - -/* Define if you have the header file. */ -#define HAVE_SGTTY_H 1 - -/* Define if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_SOCKET_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_TIME_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define if you have the header file. */ -#undef HAVE_TERMIOS_H - -/* Define if you have the header file. */ -#define HAVE_TIME_H 1 - -/* Define if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Define if you have the resolv library (-lresolv). */ -#define HAVE_LIBRESOLV 1 - -/* Define if you have the socket library (-lsocket). */ -#define HAVE_LIBSOCKET 1 - -/* Define if getaddrinfo exists and works */ -#define HAVE_GETADDRINFO 1 - -/* Define if you have the header file. */ -#define HAVE_TIMEVAL_H 1 - -/* Define if you have the timeval struct. */ -#define HAVE_STRUCT_TIMEVAL 1 - -/* Name of this package! */ -#define PACKAGE "not-used" - -/* Version number of this archive. */ -#define VERSION "not-used" - -/* Define if you have the getpass function. */ -#undef HAVE_GETPASS - -/* Define if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define if you have the `strtok_r' function. */ -/* Condition lifted from */ -#if __CRTL_VER >= 70301000 -# define HAVE_STRTOK_R 1 -#endif - -/* Define if you have the `strtoll' function. */ -#define HAVE_STRTOLL 1 - -/* Define if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you need the memory.h header file even with stdlib.h */ -#define NEED_MEMORY_H 1 - -/* Define if you have the `sigsetjmp' function. */ -#define HAVE_SIGSETJMP 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SETJMP_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LIMITS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_IOCTL_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STROPTS_H 1 - -/* Define if you have the getnameinfo function. */ -#define HAVE_GETNAMEINFO 1 - -/* Define to the type qualifier of arg 1 for getnameinfo. */ -#define GETNAMEINFO_QUAL_ARG1 const - -/* Define to the type of arg 1 for getnameinfo. */ -#define GETNAMEINFO_TYPE_ARG1 struct sockaddr * - -/* Define to the type of arg 2 for getnameinfo. */ -#define GETNAMEINFO_TYPE_ARG2 size_t - -/* Define to the type of args 4 and 6 for getnameinfo. */ -#define GETNAMEINFO_TYPE_ARG46 size_t - -/* Define to the type of arg 7 for getnameinfo. */ -#define GETNAMEINFO_TYPE_ARG7 int - -/* Define if you have the recv function. */ -#define HAVE_RECV 1 - -/* Define to the type of arg 1 for recv. */ -#define RECV_TYPE_ARG1 int - -/* Define to the type of arg 2 for recv. */ -#define RECV_TYPE_ARG2 void * - -/* Define to the type of arg 3 for recv. */ -#define RECV_TYPE_ARG3 int - -/* Define to the type of arg 4 for recv. */ -#define RECV_TYPE_ARG4 int - -/* Define to the function return type for recv. */ -#define RECV_TYPE_RETV int - -/* Define if you have the recvfrom function. */ -#define HAVE_RECVFROM 1 - -/* Define to the type of arg 1 for recvfrom. */ -#define RECVFROM_TYPE_ARG1 int - -/* Define to the type pointed by arg 2 for recvfrom. */ -#define RECVFROM_TYPE_ARG2 void - -/* Define if the type pointed by arg 2 for recvfrom is void. */ -#define RECVFROM_TYPE_ARG2_IS_VOID 1 - -/* Define to the type of arg 3 for recvfrom. */ -#define RECVFROM_TYPE_ARG3 int - -/* Define to the type of arg 4 for recvfrom. */ -#define RECVFROM_TYPE_ARG4 int - -/* Define to the type pointed by arg 5 for recvfrom. */ -#define RECVFROM_TYPE_ARG5 struct sockaddr - -/* Define to the type pointed by arg 6 for recvfrom. */ -#define RECVFROM_TYPE_ARG6 int - -/* Define to the function return type for recvfrom. */ -#define RECVFROM_TYPE_RETV int - -/* Define if you have the send function. */ -#define HAVE_SEND 1 - -/* Define to the type of arg 1 for send. */ -#define SEND_TYPE_ARG1 int - -/* Define to the type qualifier of arg 2 for send. */ -#define SEND_QUAL_ARG2 const - -/* Define to the type of arg 2 for send. */ -#define SEND_TYPE_ARG2 void * - -/* Define to the type of arg 3 for send. */ -#define SEND_TYPE_ARG3 int - -/* Define to the type of arg 4 for send. */ -#define SEND_TYPE_ARG4 int - -/* Define to the function return type for send. */ -#define SEND_TYPE_RETV int - -/* Define to hide dollar sign from compilers in strict ansi mode. */ -#define decc_translate_vms(__s) decc$translate_vms(__s) - -#endif /* HEADER_CONFIG_VMS_H */ diff -Nru curl-7.21.2/packages/vms/Makefile.am curl-7.21.3/packages/vms/Makefile.am --- curl-7.21.2/packages/vms/Makefile.am 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/packages/vms/Makefile.am 2010-12-03 10:22:50.000000000 +0100 @@ -1,5 +1,4 @@ EXTRA_DIST = build_vms.com \ - config-vms.h \ curlmsg.h \ curlmsg.msg \ curlmsg.sdl \ diff -Nru curl-7.21.2/packages/vms/Makefile.in curl-7.21.3/packages/vms/Makefile.in --- curl-7.21.2/packages/vms/Makefile.in 2010-10-01 22:49:19.000000000 +0200 +++ curl-7.21.3/packages/vms/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -240,7 +240,6 @@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ EXTRA_DIST = build_vms.com \ - config-vms.h \ curlmsg.h \ curlmsg.msg \ curlmsg.sdl \ @@ -269,9 +268,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/vms/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/vms/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign packages/vms/Makefile + $(AUTOMAKE) --gnu packages/vms/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/packages/Win32/cygwin/Makefile.in curl-7.21.3/packages/Win32/cygwin/Makefile.in --- curl-7.21.2/packages/Win32/cygwin/Makefile.in 2010-10-01 22:49:19.000000000 +0200 +++ curl-7.21.3/packages/Win32/cygwin/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -269,9 +269,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Win32/cygwin/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/Win32/cygwin/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign packages/Win32/cygwin/Makefile + $(AUTOMAKE) --gnu packages/Win32/cygwin/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/packages/Win32/Makefile.in curl-7.21.3/packages/Win32/Makefile.in --- curl-7.21.2/packages/Win32/Makefile.in 2010-10-01 22:49:19.000000000 +0200 +++ curl-7.21.3/packages/Win32/Makefile.in 2010-12-15 15:01:17.000000000 +0100 @@ -262,9 +262,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Win32/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/Win32/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign packages/Win32/Makefile + $(AUTOMAKE) --gnu packages/Win32/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/RELEASE-NOTES curl-7.21.3/RELEASE-NOTES --- curl-7.21.2/RELEASE-NOTES 2010-10-12 23:30:31.000000000 +0200 +++ curl-7.21.3/RELEASE-NOTES 2010-12-15 15:04:25.000000000 +0100 @@ -1,61 +1,51 @@ -Curl and libcurl 7.21.2 +Curl and libcurl 7.21.3 - Public curl releases: 118 - Command line options: 138 - curl_easy_setopt() options: 180 + Public curl releases: 119 + Command line options: 143 + curl_easy_setopt() options: 185 Public functions in libcurl: 58 Known libcurl bindings: 39 - Contributors: 817 + Contributors: 827 This release includes the following changes: - o curl -T: ignore file size of special files - o Added GOPHER protocol support - o Added mk-ca-bundle.vbs script - o c-ares build now requires c-ares >= 1.6.0 + o Added --noconfigure switch to testcurl.pl + o Added --xattr option + o Added CURLOPT_RESOLVE and --resolve + o Added CURLAUTH_ONLY + o Added version-check.pl to the examples dir This release includes the following bugfixes: - o --remote-header-name security vulnerability fixed: - http://curl.haxx.se/docs/adv_20101013.html - - o multi: support the timeouts correctly, fixes known bug #62 - o multi: use timeouts properly for MAX_RECV/SEND_SPEED - o negotiation: Wrong proxy authorization - o multi: avoid sending multiple complete messages - o cmdline: make -F type= accept ;charset= - o RESUME_FROM: clarify what ftp uploads do - o http: handle trailer headers in all chunked responses - o Curl_is_connected: use correct errno - o Added SSPI build to Watcom makefile - o progress: callback for POSTs less than MAX_INITIAL_POST_SIZE - o linking problem on Fedora 13 - o Link curl and the test apps with -lrt explicitly when necessary - o chunky parser: only rewind stream internally if needed - o remote-header-name: don't output filename when NULL - o Curl_timeleft: avoid returning "no timeout" by mistake - o timeout: use the correct start value as offset - o FTP: fix wrong timeout trigger - o buildconf got better output on failures - o rtsp: avoid SIGSEGV on malformed header - o LDAP: Support for tunnelling queries through HTTP proxy - o configure's --enable-werror had a bashism - o test565: Don't hardcode IP:PORT - o configure: check for gcrypt if using GnuTLS - o configure: don't enable RTMP if the lib detect fails - o curl_easy_duphandle: clone the c-ares handle correctly - o MacOSX-Framework: updates for Snowleopard - o support URL containing colon without trailing port number - o parsedate: allow time specified without seconds - o curl_easy_escape: don't escape "unreserved" characters - o SFTP: avoid downloading negative sizes - o Lots of GSS/KRB FTP fixes - o TFTP: Work around tftpd-hpa upload bug - o libcurl.m4: several fixes - o HTTP: remove special case for 416 - o examples: use example.com in example URLs - o globbing: fix crash on unballanced open brace - o cmake: build fixed + o check for libcurl features for some command line options + o Curl_setopt: disallow CURLOPT_USE_SSL without SSL support + o http_chunks: remove debug output + o URL-parsing: consider ? a divider + o SSH: avoid using the libssh2_ prefix + o SSH: use libssh2_session_handshake() to work on win64 + o ftp: prevent server from hanging on closed data connection when stopping + a transfer before the end of the full transfer (ranges) + o LDAP: detect non-binary attributes properly + o ftp: treat server's response 421 as CURLE_OPERATION_TIMEDOUT + o gnutls->handshake: improved timeout handling + o security: Pass the right parameter to init + o krb5: Use GSS_ERROR to check for error + o TFTP: resend the correct data + o configure: fix autoconf 2.68 warning: no AC_LANG_SOURCE call detected + o GnuTLS: now detects socket errors on Windows + o symbols-in-versions: updated en masse + o added a couple examples that were missing from the tar ball + o Curl_send/recv_plain: return errno on failure + o Curl_wait_for_resolv (for c-ares): correct timeout + o ossl_connect_common: detect connection re-use + o configure: Prevent link errors with --librtmp + o openldap: use remote port in URL passed to ldap_init_fd() + o url: provide dead_connection flag in Curl_handler::disconnect + o lots of compiler warning fixes + o ssh: fix a download resume point calculation + o fix getinfo CURLINFO_LOCAL* for reused connections + o multi: the returned running handles conuter could turn negative + o multi: only ever consider pipelining for connections doing HTTP(S) This release includes the following known bugs: @@ -64,10 +54,8 @@ This release would not have looked like this without help, code, reports and advice from friends like these: - Kamil Dudka, Ben Greear, Cameron Kaiser, Dan Fandrich, Dirk Manske, - Guenter Knauf, Julien Chaffraix, Quanah Gibson-Mount, Tor Arntsen, - Peter Pentchev, James Bursa, Fabian Keil, Michal Gorny, Mauro Iorio, - Hendrik Visage, Ning Dong, David McCreedy, Patrick Monnerat, - Tim Newsome, Dan Locks, Vlad Ureche, Dimitre Dimitrov + Dan Fandrich, Guenter Knauf, Pat Ray, Hongli Lai, Kamil Dudka, + Stefan Tomanek, Alfred Gebert, Yang Tse, Julien Chaffraix, Adam Light, + Rutger Hofman, Matthias Bolte, Heinrich Ko, Dmitri Shubin Thanks! (and sorry if I forgot to mention someone) diff -Nru curl-7.21.2/src/curl_config.h.in curl-7.21.3/src/curl_config.h.in --- curl-7.21.2/src/curl_config.h.in 2010-10-13 00:03:31.000000000 +0200 +++ curl-7.21.3/src/curl_config.h.in 2010-12-15 15:07:08.000000000 +0100 @@ -177,6 +177,15 @@ /* Define to 1 if you have the freeifaddrs function. */ #undef HAVE_FREEIFADDRS +/* Define to 1 if you have the fsetxattr function. */ +#undef HAVE_FSETXATTR + +/* fsetxattr() takes 5 args */ +#undef HAVE_FSETXATTR_5 + +/* fsetxattr() takes 6 args */ +#undef HAVE_FSETXATTR_6 + /* Define to 1 if you have the ftruncate function. */ #undef HAVE_FTRUNCATE @@ -397,6 +406,9 @@ /* Define to 1 if you have the `libssh2_scp_send64' function. */ #undef HAVE_LIBSSH2_SCP_SEND64 +/* Define to 1 if you have the `libssh2_session_handshake' function. */ +#undef HAVE_LIBSSH2_SESSION_HANDSHAKE + /* Define to 1 if you have the `libssh2_version' function. */ #undef HAVE_LIBSSH2_VERSION @@ -701,6 +713,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_UTIME_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_XATTR_H + /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H diff -Nru curl-7.21.2/src/hugehelp.c curl-7.21.3/src/hugehelp.c --- curl-7.21.2/src/hugehelp.c 2010-10-06 19:13:33.000000000 +0200 +++ curl-7.21.3/src/hugehelp.c 2010-12-15 15:06:03.000000000 +0100 @@ -2,7 +2,7 @@ #ifndef HAVE_LIBZ /* * NEVER EVER edit this manually, fix the mkhelp.pl script instead! - * Generation time: Wed Oct 6 19:13:33 2010 + * Generation time: Wed Dec 15 15:06:02 2010 */ #include "setup.h" #ifdef USE_MANUAL @@ -745,7 +745,7 @@ "\n" , stdout); fputs( -" You can also explicitly change the name field of an 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\" url.com\n" @@ -1616,21 +1616,40 @@ " timestamp of the remote file, and if that is available make the\n" " local file get that same timestamp.\n" "\n" -" --retry \n" -" If a transient error is returned when curl tries to perform a\n" +" --resolve \n" +" Provide a custom address for a specific host and port pair.\n" +, stdout); + fputs( +" Using this, you can make the curl requests(s) use a specified\n" +" address and prevent the otherwise normally resolved address to\n" +" be used. Consider it a sort of /etc/hosts alternative provided\n" +" on the command line. The port number should be the number used\n" +" for the specific protocol the host will be used for. It means\n" +" you need several entries if you want to provide address for the\n" , stdout); fputs( +" same host but different ports.\n" +"\n" +" This option can be used many times to add many host names to\n" +" resolve.\n" +"\n" +" (Added in 7.21.3)\n" +"\n" +" --retry \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" +, stdout); + fputs( " 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" " second and then for all forthcoming retries it will double the\n" -, stdout); - fputs( " 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" +, stdout); + fputs( " you disable this exponential backoff algorithm. See also\n" " --retry-max-time to limit the total time allowed for retries.\n" " (Added in 7.12.3)\n" @@ -1639,31 +1658,31 @@ " decide the amount.\n" "\n" " --retry-delay \n" -, stdout); - fputs( " 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( " 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. (Added in\n" " 7.12.3)\n" "\n" " If this option is used multiple times, the last occurrence\n" -, stdout); - fputs( " determines the amount.\n" "\n" " --retry-max-time \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" -, stdout); - fputs( " single request's maximum time, use -m/--max-time. Set this\n" " option to zero to not timeout retries. (Added in 7.12.3)\n" "\n" +, stdout); + fputs( " If this option is used multiple times, the last occurrence\n" " determines the amount.\n" "\n" @@ -1672,13 +1691,13 @@ " sages. Makes Curl mute.\n" "\n" " -S/--show-error\n" -, stdout); - fputs( " When used with -s it makes curl show an error message if it\n" " fails.\n" "\n" " --socks4 \n" " Use the specified SOCKS4 proxy. If the port number is not speci-\n" +, stdout); + fputs( " fied, it is assumed at port 1080. (Added in 7.15.2)\n" "\n" " This option overrides any previous use of -x/--proxy, as they\n" @@ -1686,12 +1705,12 @@ "\n" " If this option is used several times, the last one will be used.\n" "\n" -, stdout); - fputs( " --socks4a \n" " Use the specified SOCKS4a proxy. If the port number is not spec-\n" " ified, it is assumed at port 1080. (Added in 7.18.0)\n" "\n" +, stdout); + fputs( " This option overrides any previous use of -x/--proxy, as they\n" " are mutually exclusive.\n" "\n" @@ -1699,11 +1718,11 @@ "\n" " --socks5-hostname \n" " Use the specified SOCKS5 proxy (and let the proxy resolve the\n" -, stdout); - fputs( " host name). If the port number is not specified, it is assumed\n" " at port 1080. (Added in 7.18.0)\n" "\n" +, stdout); + fputs( " This option overrides any previous use of -x/--proxy, as they\n" " are mutually exclusive.\n" "\n" @@ -1712,9 +1731,9 @@ " --socks without the number appended.)\n" "\n" " --socks5 \n" +" Use the specified SOCKS5 proxy - but resolve the host name\n" , stdout); fputs( -" 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" @@ -1723,10 +1742,10 @@ "\n" " If this option is used several times, the last one will be used.\n" " (This option was previously wrongly documented and used as\n" -, stdout); - fputs( " --socks without the number appended.)\n" "\n" +, stdout); + fputs( " This option (as well as --socks4) does not work with IPV6, FTPS\n" " or LDAP.\n" "\n" @@ -1737,9 +1756,9 @@ " Examples:\n" " --socks5 proxy-name --socks5-gssapi-service sockd would use\n" " sockd/proxy-name\n" +" --socks5 proxy-name --socks5-gssapi-service sockd/real-name\n" , stdout); fputs( -" --socks5 proxy-name --socks5-gssapi-service sockd/real-name\n" " would use sockd/real-name for cases where the proxy-name does\n" " not match the princpal name.\n" " (Added in 7.19.4).\n" @@ -1748,9 +1767,9 @@ " As part of the gssapi negotiation a protection mode is negoti-\n" " ated. The rfc1961 says in section 4.3/4.4 it should be pro-\n" " tected, but the NEC reference implementation does not. The\n" +" option --socks5-gssapi-nec allows the unprotected exchange of\n" , stdout); fputs( -" option --socks5-gssapi-nec allows the unprotected exchange of\n" " the protection mode negotiation. (Added in 7.19.4).\n" "\n" " --stderr \n" @@ -1759,11 +1778,11 @@ " This option has no point when you're using a shell with decent\n" " redirecting capabilities.\n" "\n" -, stdout); - fputs( " If this option is used several times, the last one will be used.\n" "\n" " --tcp-nodelay\n" +, stdout); + fputs( " Turn on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n" " page for details about this option. (Added in 7.11.2)\n" "\n" @@ -1774,11 +1793,11 @@ "\n" " XDISPLOC= Sets the X display location.\n" "\n" -, stdout); - fputs( " NEW_ENV= Sets an environment variable.\n" "\n" " --tftp-blksize \n" +, stdout); + fputs( " (TFTP) Set TFTP BLKSIZE option (must be >512). This is the block\n" " size that curl will try to use when tranferring data to or from\n" " a TFTP server. By default 512 bytes will be used.\n" @@ -1788,28 +1807,28 @@ " (Added in 7.20.0)\n" "\n" " -T/--upload-file \n" +" This transfers the specified local file to the remote URL. If\n" , stdout); fputs( -" 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 a HTTP(S) server, the PUT command will\n" " be used.\n" "\n" +, stdout); + fputs( " 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 for each URL on the command line. Each -T\n" , stdout); fputs( -" You can specify one -T for each URL on the command line. Each -T\n" " + URL pair specifies what to upload and to where. curl also sup-\n" " ports \"globbing\" of the -T argument, meaning that you can upload\n" " multiple files to a single URL by using the same URL globbing\n" @@ -1819,11 +1838,11 @@ "\n" " or even\n" "\n" -, stdout); - fputs( " curl -T \"img[1-1000].png\" ftp://ftp.picturemania.com/upload/\n" "\n" " --trace \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" @@ -1831,21 +1850,21 @@ " This option overrides previous uses of -v/--verbose or --trace-\n" " ascii.\n" "\n" -, stdout); - fputs( " If this option is used several times, the last one will be used.\n" "\n" " --trace-ascii \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" " 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" -, stdout); - fputs( " that might be easier to read for untrained humans.\n" "\n" +, stdout); + fputs( " This option overrides previous uses of -v/--verbose or --trace.\n" "\n" " If this option is used several times, the last one will be used.\n" @@ -1856,10 +1875,10 @@ "\n" " -u/--user \n" " Specify the user name and password to use for server authentica-\n" -, stdout); - fputs( " tion. Overrides -n/--netrc and --netrc-optional.\n" "\n" +, stdout); + fputs( " If you just give the user name (without entering a colon) curl\n" " will prompt for a password.\n" "\n" @@ -1868,10 +1887,10 @@ " from your environment by simply specifying a single colon with\n" " this option: \"-u :\".\n" "\n" -, stdout); - fputs( " If this option is used several times, the last one will be used.\n" "\n" +, stdout); + fputs( " -U/--proxy-user \n" " Specify the user name and password to use for proxy authentica-\n" " tion.\n" @@ -1881,10 +1900,10 @@ " from your environment by simply specifying a single colon with\n" " this option: \"-U :\".\n" "\n" -, stdout); - fputs( " If this option is used several times, the last one will be used.\n" "\n" +, stdout); + fputs( " --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" @@ -1894,9 +1913,9 @@ " options.\n" "\n" " -v/--verbose\n" +" Makes the fetching more verbose/talkative. Mostly useful for\n" , stdout); fputs( -" Makes the fetching more verbose/talkative. Mostly useful for\n" " debugging. A line starting with '>' means \"header data\" sent by\n" " curl, '<' means \"header data\" received by curl that is hidden in\n" " normal cases, and a line starting with '*' means additional info\n" @@ -1905,9 +1924,9 @@ " Note that if you only want HTTP headers in the output,\n" " -i/--include might be the option you're looking for.\n" "\n" +" If you think this option still doesn't give you enough details,\n" , stdout); fputs( -" If you think this option still doesn't give you enough details,\n" " consider using --trace or --trace-ascii instead.\n" "\n" " This option overrides previous uses of --trace-ascii or --trace.\n" @@ -1917,10 +1936,10 @@ " -V/--version\n" " Displays information about curl and the libcurl version it uses.\n" " The first line includes the full version of curl, libcurl and\n" -, stdout); - fputs( " other 3rd party libraries linked with the executable.\n" "\n" +, stdout); + fputs( " The second line (starts with \"Protocols:\") shows all protocols\n" " that libcurl reports to support.\n" "\n" @@ -2450,7 +2469,19 @@ "\n" " 83 Issuer check failed (added in 7.19.0).\n" "\n" +" 84 The FTP PRET command failed\n" +"\n" +" 85 RTSP: mismatch of CSeq numbers\n" +"\n" +" 86 RTSP: mismatch of Session Identifiers\n" +"\n" +" 87 unable to parse FTP file list\n" +"\n" +" 88 FTP chunk callback reported error\n" +"\n" " XX More error codes will appear here in future releases. The exist-\n" +, stdout); + fputs( " ing ones are meant to never change.\n" "\n" "AUTHORS / CONTRIBUTORS\n" @@ -2461,8 +2492,6 @@ " http://curl.haxx.se\n" "\n" "FTP\n" -, stdout); - fputs( " ftp://ftp.sunet.se/pub/www/utilities/curl/\n" "\n" "SEE ALSO\n" @@ -2477,6 +2506,8 @@ "\n" "SIMPLE USAGE\n" "\n" +, stdout); + fputs( " Get the main page from Netscape's web-server:\n" "\n" " curl http://www.netscape.com/\n" @@ -2485,8 +2516,6 @@ "\n" " curl ftp://ftp.funet.fi/README\n" "\n" -, stdout); - fputs( " Get a web page from a server using port 8000:\n" "\n" " curl http://www.weirdserver.com:8000/\n" @@ -2501,14 +2530,14 @@ "\n" " Fetch two documents at once:\n" "\n" +, stdout); + fputs( " curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/\n" "\n" " Get a file off an FTPS server:\n" "\n" " curl ftps://files.are.secure.com/secrets.txt\n" "\n" -, stdout); - fputs( " or use the more appropriate FTPS way to get the same file:\n" "\n" " curl --ftp-ssl ftp://files.are.secure.com/secrets.txt\n" @@ -2519,13 +2548,13 @@ "\n" " Get a file from an SSH server using SCP using a private key to authenticate:\n" "\n" +, stdout); + fputs( " curl -u username: --key ~/.ssh/id_dsa --pubkey ~/.ssh/id_dsa.pub \\\n" " scp://shell.example.com/~/personal.txt\n" "\n" " Get the main page from an IPv6 web server:\n" "\n" -, stdout); - fputs( " curl -g \"http://[2001:1890:1112:1::20]/\"\n" "\n" "DOWNLOAD TO A FILE\n" @@ -2536,14 +2565,14 @@ "\n" " Get a web page and store in a local file, make the local file get the name\n" " of the remote document (if no file name part is specified in the URL, this\n" +, stdout); + fputs( " will fail):\n" "\n" " curl -O http://www.netscape.com/index.html\n" "\n" " Fetch two files and store them with their remote names:\n" "\n" -, stdout); - fputs( " curl -O www.haxx.se/index.html -O curl.haxx.se/download.html\n" "\n" "USING PASSWORDS\n" @@ -2560,11 +2589,11 @@ "\n" " FTPS\n" "\n" +, stdout); + fputs( " It is just like for FTP, but you may also want to specify and use\n" " SSL-specific options for certificates etc.\n" "\n" -, stdout); - fputs( " Note that using FTPS:// as prefix is the \"implicit\" way as described in the\n" " standards while the recommended \"explicit\" way is done by using FTP:// and\n" " the --ftp-ssl option.\n" @@ -2573,10 +2602,10 @@ "\n" " This is similar to FTP, but you can specify a private key to use instead of\n" " a password. Note that the private key may itself be protected by a password\n" -" that is unrelated to the login password of the remote system. If you\n" -" provide a private key file you must also provide a public key file.\n" , stdout); fputs( +" that is unrelated to the login password of the remote system. If you\n" +" provide a private key file you must also provide a public key file.\n" "\n" " HTTP\n" "\n" @@ -2589,16 +2618,18 @@ "\n" " curl -u name:passwd http://machine.domain/full/path/to/file\n" "\n" -" HTTP offers many different methods of authentication and curl supports\n" -" several: Basic, Digest, NTLM and Negotiate. Without telling which method to\n" , stdout); fputs( +" HTTP offers many different methods of authentication and curl supports\n" +" several: Basic, Digest, NTLM and Negotiate. Without telling which method to\n" " use, curl defaults to Basic. You can also ask curl to pick the most secure\n" " ones out of the ones that the server accepts for the given URL, by using\n" " --anyauth.\n" "\n" " NOTE! Since HTTP URLs don't support user and password, you can't use that\n" " style when using Curl via a proxy. You _must_ use the -u style fetch\n" +, stdout); + fputs( " during such circumstances.\n" "\n" " HTTPS\n" @@ -2607,8 +2638,6 @@ "\n" "PROXY\n" "\n" -, stdout); - fputs( " Get an ftp file using a proxy named my-proxy that uses port 888:\n" "\n" " curl -x my-proxy:888 ftp://ftp.leachsite.com/README\n" @@ -2620,10 +2649,10 @@ "\n" " Some proxies require special authentication. Specify by using -U as above:\n" "\n" -" curl -U user:passwd -x my-proxy:888 http://www.get.this/\n" -"\n" , stdout); fputs( +" curl -U user:passwd -x my-proxy:888 http://www.get.this/\n" +"\n" " A comma-separated list of hosts and domains which do not use the proxy can\n" " be specified as:\n" "\n" @@ -2634,13 +2663,13 @@ "\n" " curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.\n" "\n" +, stdout); + fputs( " See also the environment variables Curl support that offer further proxy\n" " control.\n" "\n" "RANGES\n" "\n" -, stdout); - fputs( " With HTTP 1.1 byte-ranges were introduced. Using this, a client can request\n" " to get only one or more subparts of a specified document. Curl supports\n" " this with the -r flag.\n" @@ -2653,11 +2682,11 @@ "\n" " curl -r -500 http://www.get.this/\n" "\n" +, stdout); + fputs( " Curl also supports simple ranges for FTP files as well. Then you can only\n" " specify start and stop position.\n" "\n" -, stdout); - fputs( " Get the first 100 bytes of a document using FTP:\n" "\n" " curl -r 0-99 ftp://www.get.this/README\n" @@ -2674,11 +2703,11 @@ "\n" " curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile\n" "\n" +, stdout); + fputs( " Upload a local file to the remote site, and use the local file name remote\n" " too:\n" "\n" -, stdout); - fputs( " curl -T uploadfile -u user:passwd ftp://ftp.upload.com/\n" "\n" " Upload a local file to get appended to the remote file:\n" @@ -2689,14 +2718,14 @@ " configured to allow that kind of tunneling. If it does, you can run curl in\n" " a fashion similar to:\n" "\n" +, stdout); + fputs( " curl --proxytunnel -x proxy:port -T localfile ftp.upload.com\n" "\n" " HTTP\n" "\n" " Upload all data on stdin to a specified http site:\n" "\n" -, stdout); - fputs( " curl -T - http://www.upload.com/myfile\n" "\n" " Note that the http server must have been configured to accept PUT before\n" @@ -2707,10 +2736,10 @@ "VERBOSE / DEBUG\n" "\n" " If curl fails where it isn't supposed to, if the servers don't let you in,\n" -" if you can't understand the responses: use the -v flag to get verbose\n" -" fetching. Curl will output lots of info and what it sends and receives in\n" , stdout); fputs( +" if you can't understand the responses: use the -v flag to get verbose\n" +" fetching. Curl will output lots of info and what it sends and receives in\n" " order to let the user see all client-server interaction (but it won't show\n" " you the actual data).\n" "\n" @@ -2723,11 +2752,11 @@ " curl --trace trace.txt www.haxx.se\n" "\n" "\n" +, stdout); + fputs( "DETAILED INFORMATION\n" "\n" " Different protocols provide different ways of getting detailed information\n" -, stdout); - fputs( " about specific files/documents. To get curl to show detailed information\n" " about a single file, you should use -I/--head option. It displays all\n" " available info on a single file for HTTP and FTP. The HTTP information is a\n" @@ -2735,9 +2764,9 @@ "\n" " For HTTP, you can get the header information (the same as -I would show)\n" " shown before the data by using -i/--include. Curl understands the\n" -" -D/--dump-header option when getting files from both FTP and HTTP, and it\n" , stdout); fputs( +" -D/--dump-header option when getting files from both FTP and HTTP, and it\n" " will then store the headers in the specified file.\n" "\n" " Store the HTTP headers in a separate file (headers.txt in the example):\n" @@ -2750,11 +2779,11 @@ "\n" "POST (HTTP)\n" "\n" +, stdout); + fputs( " It's easy to post data using curl. This is done using the -d \n" " option. The post data must be urlencoded.\n" "\n" -, stdout); - fputs( " Post a simple \"name\" and \"phone\" guestbook.\n" "\n" " curl -d \"name=Rafael%20Sagula&phone=3320780\" \\\n" @@ -2765,25 +2794,25 @@ " Dig out all the 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" "\n" +, stdout); + fputs( " 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" -, stdout); - fputs( " =&=&...\n" "\n" " The 'variable' names are the names set with \"name=\" in the 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" " write weird letters with %XX where XX is the hexadecimal representation of\n" +, stdout); + fputs( " the letter's ASCII code.\n" "\n" " Example:\n" "\n" " (page located at http://www.formpost.com/getthis/\n" "\n" -, stdout); - fputs( "

\n" " \n" " \n" @@ -2795,21 +2824,21 @@ "\n" " To post to this, you enter a curl command line like:\n" "\n" +, stdout); + fputs( " curl -d \"user=foobar&pass=12345&id=blablabla&ding=submit\" (continues)\n" " http://www.formpost.com/getthis/post.cgi\n" "\n" "\n" -, stdout); - fputs( " While -d uses the application/x-www-form-urlencoded mime-type, generally\n" " understood by CGI's and similar, curl also supports the more capable\n" " multipart/form-data type. This latter type supports things like file upload.\n" "\n" " -F accepts parameters like -F \"name=contents\". If you want the contents to\n" -" be read from a file, use <@filename> as contents. When specifying a file,\n" -" you can also specify the file content type by appending ';type='\n" , stdout); fputs( +" be read from a file, use <@filename> as contents. When specifying a file,\n" +" you can also specify the file content type by appending ';type='\n" " to the file name. You can also post the contents of several files in one\n" " field. For example, the field name 'coolfiles' is used to send three files,\n" " with different content types using the following syntax:\n" @@ -2817,25 +2846,27 @@ " curl -F \"coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html\" \\\n" " http://www.post.com/postit.cgi\n" "\n" -" If the content-type is not specified, curl will try to guess from the file\n" -" extension (it only knows a few), or use the previously specified type (from\n" , stdout); fputs( +" If the content-type is not specified, curl will try to guess from the file\n" +" extension (it only knows a few), or use the previously specified type (from\n" " an earlier file if several files are specified in a list) or else it will\n" " using the default type 'text/plain'.\n" "\n" " Emulate a fill-in form with -F. Let's say you fill in three fields in a\n" " form. One field is a file name which to post, one field is your name and one\n" +, stdout); + fputs( " field is a file description. We want to post the file we have written named\n" " \"cooltext.txt\". To let curl do the posting of this data instead of your\n" " favourite browser, you have to read the HTML source of the form page and\n" -, stdout); - fputs( " find the names of the input fields. In our example, the input field names\n" " are 'file', 'yourname' and 'filedescription'.\n" "\n" " curl -F \"file=@cooltext.txt\" -F \"yourname=Daniel\" \\\n" " -F \"filedescription=Cool text file with cool text inside\" \\\n" +, stdout); + fputs( " http://www.post.com/postit.cgi\n" "\n" " To send two files in one post you can do it in two ways:\n" @@ -2844,14 +2875,14 @@ "\n" " curl -F \"pictures=@dog.gif,cat.gif\"\n" "\n" -, stdout); - fputs( " 2. Send two fields with two field names:\n" "\n" " curl -F \"docpicture=@dog.gif\" -F \"catpicture=@cat.gif\"\n" "\n" " To send a field value literally without interpreting a leading '@'\n" " or '<', or an embedded ';type=', use --form-string instead of\n" +, stdout); + fputs( " -F. This is recommended when the value is obtained from a user or\n" " some other unpredictable source. Under these circumstances, using\n" " -F instead of --form-string would allow a user to trick curl into\n" @@ -2859,11 +2890,11 @@ "\n" "REFERRER\n" "\n" -, stdout); - fputs( " A HTTP request has the option to include information about which address\n" " that referred to actual page. Curl allows you to specify the\n" " referrer to be used on the command line. It is especially useful to\n" +, stdout); + fputs( " fool or trick stupid servers or CGI scripts that rely on that information\n" " being available or contain certain data.\n" "\n" @@ -2873,11 +2904,11 @@ "\n" "USER AGENT\n" "\n" -, stdout); - fputs( " A HTTP request has the option to include information about the browser\n" " that generated the request. Curl allows it to be specified on the command\n" " line. It is especially useful to fool or trick stupid servers or CGI\n" +, stdout); + fputs( " scripts that only accept certain browsers.\n" "\n" " Example:\n" @@ -2887,49 +2918,49 @@ " Other common strings:\n" " 'Mozilla/3.0 (Win95; I)' Netscape Version 3 for Windows 95\n" " 'Mozilla/3.04 (Win95; U)' Netscape Version 3 for Windows 95\n" -, stdout); - fputs( " 'Mozilla/2.02 (OS/2; U)' Netscape Version 2 for OS/2\n" " 'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)' NS for AIX\n" " 'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)' NS for Linux\n" "\n" +, stdout); + fputs( " Note that Internet Explorer tries hard to be compatible in every way:\n" " 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)' MSIE for W95\n" "\n" " Mozilla is not the only possible User-Agent name:\n" " 'Konqueror/1.0' KDE File Manager desktop client\n" -, stdout); - fputs( " 'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser\n" "\n" "COOKIES\n" "\n" " Cookies are generally used by web servers to keep state information at the\n" " client's side. The server sets cookies by sending a response line in the\n" +, stdout); + fputs( " headers that looks like 'Set-Cookie: ' where the data part then\n" " typically contains a set of NAME=VALUE pairs (separated by semicolons ';'\n" " like \"NAME1=VALUE1; NAME2=VALUE2;\"). The server can also specify for what\n" -, stdout); - fputs( " path the \"cookie\" should be used for (by specifying \"path=value\"), when the\n" " cookie should expire (\"expire=DATE\"), for what domain to use it\n" " (\"domain=NAME\") and if it should be used on secure connections only\n" " (\"secure\").\n" "\n" +, stdout); + fputs( " If you've received a page from a server that contains a header like:\n" " Set-Cookie: sessionid=boo123; path=\"/foo\";\n" "\n" " it means the server wants that first pair passed on when we get anything in\n" " a path beginning with \"/foo\".\n" "\n" -, stdout); - fputs( " Example, get a page that wants my name passed in a cookie:\n" "\n" " curl -b \"name=Daniel\" www.sillypage.com\n" "\n" " Curl also has the ability to use previously received cookies in following\n" " sessions. If you get cookies from a server and store them in a file in a\n" +, stdout); + fputs( " manner similar to:\n" "\n" " curl --dump-header headers www.example.com\n" @@ -2939,36 +2970,36 @@ "\n" " curl -b headers www.example.com\n" "\n" -, stdout); - fputs( " While saving headers to a file is a working way to store cookies, it is\n" " however error-prone and not the preferred way to do this. Instead, make curl\n" " save the incoming cookies using the well-known netscape cookie format like\n" " this:\n" "\n" +, stdout); + fputs( " curl -c cookies.txt www.example.com\n" "\n" " Note that by specifying -b you enable the \"cookie awareness\" and with -L\n" " you can make curl follow a location: (which often is used in combination\n" -, stdout); - fputs( " with cookies). So that if a site sends cookies and a location, you can\n" " use a non-existing file to trigger the cookie awareness like:\n" "\n" " curl -L -b empty.txt www.example.com\n" "\n" " The file to read cookies from must be formatted using plain HTTP headers OR\n" +, stdout); + fputs( " as netscape's cookie file. Curl will determine what kind it is based on the\n" " file contents. In the above command, curl will parse the header and store\n" " the cookies received from www.example.com. curl will send to the server the\n" -, stdout); - fputs( " stored cookies which match the request as it follows the location. The\n" " file \"empty.txt\" may be a nonexistent file.\n" "\n" " Alas, to both read and write cookies from a netscape cookie file, you can\n" " set both -b and -c to use the same file:\n" "\n" +, stdout); + fputs( " curl -b cookies.txt -c cookies.txt www.example.com\n" "\n" "PROGRESS METER\n" @@ -2976,31 +3007,29 @@ " The progress meter exists to show a user that something actually is\n" " happening. The different fields in the output have the following meaning:\n" "\n" -, stdout); - fputs( " % Total % Received % Xferd Average Speed Time Curr.\n" " Dload Upload Total Current Left Speed\n" " 0 151M 0 38608 0 0 9406 0 4:41:43 0:00:04 4:41:39 9287\n" "\n" " From left-to-right:\n" +, stdout); + fputs( " % - percentage completed of the whole transfer\n" " Total - total size of the whole expected transfer\n" " % - percentage completed of the download\n" " Received - currently downloaded amount of bytes\n" -, stdout); - fputs( " % - percentage completed of the upload\n" " Xferd - currently uploaded amount of bytes\n" " Average Speed\n" " Dload - the average transfer speed of the download\n" " Average Speed\n" " Upload - the average transfer speed of the upload\n" +, stdout); + fputs( " Time Total - expected time to complete the operation\n" " Time Current - time passed since the invoke\n" " Time Left - expected time left to completion\n" " Curr.Speed - the average transfer speed the last 5 seconds (the first\n" -, stdout); - fputs( " 5 seconds of a transfer is based on less time of course.)\n" "\n" " The -# option will display a totally different progress bar that doesn't\n" @@ -3008,32 +3037,34 @@ "\n" "SPEED LIMIT\n" "\n" +, stdout); + fputs( " Curl allows the user to set the transfer speed conditions that must be met\n" " to let the transfer keep going. By using the switch -y and -Y you\n" " can make curl abort transfers if the transfer speed is below the specified\n" " lowest limit for a specified time.\n" "\n" -, stdout); - fputs( " To have curl abort the download if the speed is slower than 3000 bytes per\n" " second for 1 minute, run:\n" "\n" " curl -Y 3000 -y 60 www.far-away-site.com\n" "\n" " This can very well be used in combination with the overall time limit, so\n" +, stdout); + fputs( " that the above operation must be completed in whole within 30 minutes:\n" "\n" " curl -m 1800 -Y 3000 -y 60 www.far-away-site.com\n" "\n" " Forcing curl not to transfer data faster than a given rate is also possible,\n" -, stdout); - fputs( " which might be useful if you're using a limited bandwidth connection and you\n" " don't want your transfer to use all of it (sometimes referred to as\n" " \"bandwidth throttle\").\n" "\n" " Make curl transfer data no faster than 10 kilobytes per second:\n" "\n" +, stdout); + fputs( " curl --limit-rate 10K www.far-away-site.com\n" "\n" " or\n" @@ -3044,11 +3075,11 @@ "\n" " curl -T upload --limit-rate 1M ftp://uploadshereplease.com\n" "\n" -, stdout); - fputs( " When using the --limit-rate option, the transfer rate is regulated on a\n" " per-second basis, which will cause the total transfer speed to become lower\n" " than the given number. Sometimes of course substantially lower, if your\n" +, stdout); + fputs( " transfer stalls during periods.\n" "\n" "CONFIG FILE\n" @@ -3057,19 +3088,17 @@ " systems) from the user's home dir on startup.\n" "\n" " The config file could be made up with normal command line switches, but you\n" -, stdout); - fputs( " can also specify the long options without the dashes to make it more\n" " readable. You can separate the options and the parameter with spaces, or\n" " with = or :. Comments can be used within the file. If the first letter on a\n" +, stdout); + fputs( " line is a '#'-symbol the rest of the line is treated as a comment.\n" "\n" " If you want the parameter to contain spaces, you must enclose the entire\n" " parameter within double quotes (\"). Within those quotes, you specify a\n" " quote as \\\".\n" "\n" -, stdout); - fputs( " NOTE: You must specify options and their arguments on the same line.\n" "\n" " Example, set default time out and proxy in a config file:\n" @@ -3077,14 +3106,14 @@ " # We want a 30 minute timeout:\n" " -m 1800\n" " # ... and we use a proxy for all accesses:\n" +, stdout); + fputs( " proxy = proxy.our.domain.com:8080\n" "\n" " White spaces ARE significant at the end of lines, but all white spaces\n" " leading up to the first characters of each line are ignored.\n" "\n" " Prevent curl from reading the default file by using -q as the first command\n" -, stdout); - fputs( " line parameter, like:\n" "\n" " curl -q www.thatsite.com\n" @@ -3093,13 +3122,13 @@ " without URL by making a config file similar to:\n" "\n" " # default url to get\n" +, stdout); + fputs( " url = \"http://help.with.curl.com/curlhelp.html\"\n" "\n" " You can specify another config file to be read by using the -K/--config\n" " flag. If you set config file name to \"-\" it'll read the config from stdin,\n" " which can be handy if you want to hide options from being visible in process\n" -, stdout); - fputs( " tables etc:\n" "\n" " echo \"user = user:passwd\" | curl -K - http://that.secret.site.com\n" @@ -3107,6 +3136,8 @@ "EXTRA HEADERS\n" "\n" " When using curl in your own very special programs, you may end up needing\n" +, stdout); + fputs( " to pass on your own custom headers when getting a web page. You can do\n" " this by using the -H flag.\n" "\n" @@ -3116,10 +3147,10 @@ " curl -H \"X-you-and-me: yes\" www.love.com\n" "\n" " This can also be useful in case you want curl to send a different text in a\n" -, stdout); - fputs( " header than it normally does. The -H header you specify then replaces the\n" " header curl would normally send. If you replace an internal header with an\n" +, stdout); + fputs( " empty one, you prevent that header from being sent. To prevent the Host:\n" " header from being used:\n" "\n" @@ -3131,11 +3162,11 @@ " relative the directory you enter. To get the file 'README' from your home\n" " directory at your ftp site, do:\n" "\n" -, stdout); - fputs( " curl ftp://user:passwd@my.site.com/README\n" "\n" " But if you want the README file from the root directory of that very same\n" +, stdout); + fputs( " site, you need to specify the absolute file name:\n" "\n" " curl ftp://user:passwd@my.site.com//README\n" @@ -3146,37 +3177,37 @@ "\n" " With sftp: and scp: URLs, the path name given is the absolute name on the\n" " server. To access a file relative to the remote user's home directory,\n" -, stdout); - fputs( " prefix the file with /~/ , such as:\n" "\n" " curl -u $USER sftp://home.example.com/~/.bashrc\n" "\n" "FTP and firewalls\n" "\n" +, stdout); + fputs( " The FTP protocol requires one of the involved parties to open a second\n" " connection as soon as data is about to get transfered. There are two ways to\n" " do this.\n" "\n" " The default way for curl is to issue the PASV command which causes the\n" " server to open another port and await another connection performed by the\n" -, stdout); - fputs( " client. This is good if the client is behind a firewall that don't allow\n" " incoming connections.\n" "\n" " curl ftp.download.com\n" "\n" +, stdout); + fputs( " If the server for example, is behind a firewall that don't allow connections\n" " on other ports than 21 (or if it just doesn't support the PASV command), the\n" " other way to do it is to use the PORT command and instruct the server to\n" " connect to the client on the given (as parameters to the PORT command) IP\n" " number and port.\n" "\n" -, stdout); - fputs( " The -P flag to curl supports a few different options. Your machine may have\n" " several IP-addresses and/or network interfaces and curl allows you to select\n" +, stdout); + fputs( " which of them to use. Default address can also be used:\n" "\n" " curl -P - ftp.download.com\n" @@ -3188,14 +3219,14 @@ "\n" " Download with PORT but use 192.168.0.10 as our IP address to use:\n" "\n" -, stdout); - fputs( " curl -P 192.168.0.10 ftp.download.com\n" "\n" "NETWORK INTERFACE\n" "\n" " Get a web page from a server using a specified port for the interface:\n" "\n" +, stdout); + fputs( " curl --interface eth0:1 http://www.netscape.com/\n" "\n" " or\n" @@ -3210,30 +3241,30 @@ "\n" " Example:\n" "\n" -, stdout); - fputs( " curl https://www.secure-site.com\n" "\n" " Curl is also capable of using your personal certificates to get/post files\n" +, stdout); + fputs( " from sites that require valid certificates. The only drawback is that the\n" " certificate needs to be in PEM-format. PEM is a standard and open format to\n" " store certificates with, but it is not used by the most commonly used\n" " browsers (Netscape and MSIE both use the so called PKCS#12 format). If you\n" -, stdout); - fputs( " want curl to use the certificates you use with your (favourite) browser, you\n" " may need to download/compile a converter that can convert your browser's\n" +, stdout); + fputs( " formatted certificates to PEM formatted ones. This kind of converter is\n" " included in recent versions of OpenSSL, and for older versions Dr Stephen\n" " N. Henson has written a patch for SSLeay that adds this functionality. You\n" " can get his patch (that requires an SSLeay installation) from his site at:\n" " http://www.drh-consultancy.demon.co.uk/\n" -, stdout); - fputs( "\n" " Example on how to automatically retrieve a document using a certificate with\n" " a personal password:\n" "\n" +, stdout); + fputs( " curl -E /path/to/cert.pem:password https://secure.site.com/\n" "\n" " If you neglect to specify the password on the command line, you will be\n" @@ -3241,10 +3272,10 @@ "\n" " Many older SSL-servers have problems with SSLv3 or TLS, that newer versions\n" " of OpenSSL etc is using, therefore it is sometimes useful to specify what\n" -, stdout); - fputs( " SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL\n" " version to use (for SSLv3, SSLv2 or TLSv1 respectively):\n" +, stdout); + fputs( "\n" " curl -2 https://secure.site.com/\n" "\n" @@ -3256,12 +3287,12 @@ "\n" " You start with hitting the 'security' menu button in netscape.\n" "\n" -, stdout); - fputs( " Select 'certificates->yours' and then pick a certificate in the list\n" "\n" " Press the 'export' button\n" "\n" +, stdout); + fputs( " enter your PIN code for the certs\n" "\n" " select a proper place to save it\n" @@ -3275,12 +3306,12 @@ "RESUMING FILE TRANSFERS\n" "\n" " To continue a file transfer where it was previously aborted, curl supports\n" -, stdout); - fputs( " resume on http(s) downloads as well as ftp uploads and downloads.\n" "\n" " Continue downloading a document:\n" "\n" +, stdout); + fputs( " curl -C - -o file ftp://ftp.server.com/path/file\n" "\n" " Continue uploading a document(*1):\n" @@ -3294,11 +3325,11 @@ " (*1) = This requires that the ftp server supports the non-standard command\n" " SIZE. If it doesn't, curl will say so.\n" "\n" -, stdout); - fputs( " (*2) = This requires that the web server supports at least HTTP/1.1. If it\n" " doesn't, curl will say so.\n" "\n" +, stdout); + fputs( "TIME CONDITIONS\n" "\n" " HTTP allows a client to specify a time condition for the document it\n" @@ -3308,11 +3339,11 @@ " For example, you can easily make a download that only gets performed if the\n" " remote file is newer than a local copy. It would be made like:\n" "\n" -, stdout); - fputs( " curl -z local.html http://remote.server.com/remote.html\n" "\n" " Or you can download a file only if the local file is newer than the remote\n" +, stdout); + fputs( " one. Do this by prepending the date string with a '-', as in:\n" "\n" " curl -z -local.html http://remote.server.com/remote.html\n" @@ -3322,8 +3353,6 @@ "\n" " curl -z \"Jan 12 2012\" http://remote.server.com/remote.html\n" "\n" -, stdout); - fputs( " Curl will then accept a wide range of date formats. You always make the date\n" " check the other way around by prepending it with a dash '-'.\n" "\n" @@ -3331,6 +3360,8 @@ "\n" " For fun try\n" "\n" +, stdout); + fputs( " curl dict://dict.org/m:curl\n" " curl dict://dict.org/d:heisenbug:jargon\n" " curl dict://dict.org/d:daniel:web1913\n" @@ -3340,14 +3371,14 @@ "\n" " curl dict://dict.org/find:curl\n" "\n" -, stdout); - fputs( " Commands that break the URL description of the RFC (but not the DICT\n" " protocol) are\n" "\n" " curl dict://dict.org/show:db\n" " curl dict://dict.org/show:strat\n" "\n" +, stdout); + fputs( " Authentication is still missing (but this is not required by the RFC)\n" "\n" "LDAP\n" @@ -3356,13 +3387,13 @@ " and offer ldap:// support.\n" "\n" " LDAP is a complex thing and writing an LDAP query is not an easy task. I do\n" -, stdout); - fputs( " advice you to dig up the syntax description for that elsewhere. Two places\n" " that might suit you are:\n" "\n" " Netscape's \"Netscape Directory SDK 3.0 for C Programmer's Guide Chapter 10:\n" " Working with LDAP URLs\":\n" +, stdout); + fputs( " http://developer.netscape.com/docs/manuals/dirsdk/csdk30/url.htm\n" "\n" " RFC 2255, \"The LDAP URL Format\" http://curl.haxx.se/rfc/rfc2255.txt\n" @@ -3370,8 +3401,6 @@ " To show you an example, this is now I can get all people from my local LDAP\n" " server that has a certain sub-domain in their email address:\n" "\n" -, stdout); - fputs( " curl -B \"ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se\"\n" "\n" " If I want the same info in HTML format, I can get it by not using the -B\n" @@ -3379,6 +3408,8 @@ "\n" "ENVIRONMENT VARIABLES\n" "\n" +, stdout); + fputs( " Curl reads and understands the following environment variables:\n" "\n" " http_proxy, HTTPS_PROXY, FTP_PROXY\n" @@ -3389,13 +3420,13 @@ " ALL_PROXY\n" "\n" " A comma-separated list of host names that shouldn't go through any proxy is\n" -, stdout); - fputs( " set in (only an asterisk, '*' matches all hosts)\n" "\n" " NO_PROXY\n" "\n" " If the host name matches one of these strings, or the host is within the\n" +, stdout); + fputs( " domain of one of these strings, transactions with that node will not be\n" " proxied.\n" "\n" @@ -3406,10 +3437,10 @@ "\n" " Unix introduced the .netrc concept a long time ago. It is a way for a user\n" " to specify name and password for commonly visited ftp sites in a file so\n" -, stdout); - fputs( " that you don't have to type them in each time you visit those sites. You\n" " realize this is a big security risk if someone else gets hold of your\n" +, stdout); + fputs( " passwords, so therefore most unix programs won't read this file unless it is\n" " only readable by yourself (curl doesn't care though).\n" "\n" @@ -3417,14 +3448,14 @@ " --netrc-optional options). This is not restricted to only ftp,\n" " but curl can use it for all protocols where authentication is used.\n" "\n" -, stdout); - fputs( " A very simple .netrc file could look something like:\n" "\n" " machine curl.haxx.se login iamdaniel password mysecret\n" "\n" "CUSTOM OUTPUT\n" "\n" +, stdout); + fputs( " To better allow script programmers to get to know about the progress of\n" " curl, the -w/--write-out option was introduced. Using this, you can specify\n" " what information from the previous transfer you want to extract.\n" @@ -3432,13 +3463,13 @@ " To display the amount of bytes downloaded together with some text and an\n" " ending newline:\n" "\n" -, stdout); - fputs( " curl -w 'We downloaded %{size_download} bytes\\n' www.download.com\n" "\n" "KERBEROS FTP TRANSFER\n" "\n" " Curl supports kerberos4 and kerberos5/GSSAPI for FTP transfers. You need\n" +, stdout); + fputs( " the kerberos package installed and used at curl build time for it to be\n" " used.\n" "\n" @@ -3447,13 +3478,13 @@ "\n" " curl --krb private ftp://krb4site.com -u username:fakepwd\n" "\n" -, stdout); - fputs( " There's no use for a password on the -u switch, but a blank one will make\n" " curl ask for one and you already entered the real password to kinit/kauth.\n" "\n" "TELNET\n" "\n" +, stdout); + fputs( " The curl telnet support is basic and very easy to use. Curl passes all data\n" " passed to it on stdin to the remote server. Connect to a remote telnet\n" " server using a command line similar to:\n" @@ -3461,13 +3492,13 @@ " curl telnet://remote.server.com\n" "\n" " And enter the data to pass to the server on stdin. The result will be sent\n" -, stdout); - fputs( " to stdout or to the file you specify with -o.\n" "\n" " You might want the -N/--no-buffer option to switch off the buffered output\n" " for slow connections or similar.\n" "\n" +, stdout); + fputs( " Pass options to the telnet protocol negotiation, by using the -t option. To\n" " tell the server we use a vt100 terminal, try something like:\n" "\n" @@ -3477,11 +3508,11 @@ "\n" " - XDISPLOC= Sets the X display location.\n" "\n" -, stdout); - fputs( " - NEW_ENV= Sets an environment variable.\n" "\n" " NOTE: the telnet protocol does not specify any way to login with a specified\n" +, stdout); + fputs( " user and password so curl can't do that automatically. To do that, you need\n" " to track when the login prompt is received and send the username and\n" " password accordingly.\n" @@ -3491,20 +3522,20 @@ " Specifying multiple files on a single command line will make curl transfer\n" " all of them, one after the other in the specified order.\n" "\n" -, stdout); - fputs( " libcurl will attempt to use persistent connections for the transfers so that\n" " the second transfer to the same host can use the same connection that was\n" +, stdout); + fputs( " already initiated and was left open in the previous transfer. This greatly\n" " decreases connection time for all but the first transfer and it makes a far\n" " better use of the network.\n" "\n" " Note that curl cannot use persistent connections for transfers that are used\n" " in subsequence curl invokes. Try to stuff as many URLs as possible on the\n" -, stdout); - fputs( " same command line if they are using the same host, as that'll make the\n" " transfers faster. If you use a http proxy for file transfers, practically\n" +, stdout); + fputs( " all transfers will be persistent.\n" "\n" "MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE\n" @@ -3512,12 +3543,12 @@ " As is mentioned above, you can download multiple files with one command line\n" " by simply adding more URLs. If you want those to get saved to a local file\n" " instead of just printed to stdout, you need to add one save option for each\n" -, stdout); - fputs( " URL you specify. Note that this also goes for the -O option (but not\n" " --remote-name-all).\n" "\n" " For example: get two files and use -O for the first and a custom file\n" +, stdout); + fputs( " name for the second:\n" "\n" " curl -O http://url.com/file.txt ftp://ftp.com/moo.exe -o moo.jpg\n" @@ -3529,21 +3560,21 @@ "IPv6\n" "\n" " curl will connect to a server with IPv6 when a host lookup returns an IPv6\n" -, stdout); - fputs( " address and fall back to IPv4 if the connection fails. The --ipv4 and --ipv6\n" " options can specify which address to use when both are available. IPv6\n" +, stdout); + fputs( " addresses can also be specified directly in URLs using the syntax:\n" "\n" " http://[2001:1890:1112:1::20]/overview.html\n" "\n" " When this style is used, the -g option must be given to stop curl from\n" " interpreting the square brackets as special globbing characters. Link local\n" -, stdout); - fputs( " and site local addresses including a scope identifier, such as fe80::1234%1,\n" " may also be used, but the scope portion must be numeric and the percent\n" " character must be URL escaped. The previous example in an SFTP URL might\n" +, stdout); + fputs( " look like:\n" "\n" " sftp://[fe80::1234%251]/\n" @@ -3555,14 +3586,14 @@ "MAILING LISTS\n" "\n" " For your convenience, we have several open mailing lists to discuss curl,\n" -, stdout); - fputs( " its development and things relevant to this. Get all info at\n" " http://curl.haxx.se/mail/. Some of the lists available are:\n" "\n" " curl-users\n" "\n" " Users of the command line tool. How to use it, what doesn't work, new\n" +, stdout); + fputs( " features, related tools, questions, news, installations, compilations,\n" " running, porting etc.\n" "\n" @@ -3572,8 +3603,6 @@ "\n" " curl-announce\n" "\n" -, stdout); - fputs( " Low-traffic. Only receives announcements of new public versions. At worst,\n" " that makes something like one or two mails per month, but usually only one\n" " mail every second month.\n" @@ -3581,6 +3610,8 @@ " curl-and-php\n" "\n" " Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP\n" +, stdout); + fputs( " with a curl angle.\n" "\n" " curl-and-python\n" @@ -3588,8 +3619,6 @@ " Python hackers using curl with or without the python binding pycurl.\n" "\n" " Please direct curl questions, feature requests and trouble reports to one of\n" -, stdout); - fputs( " these mailing lists instead of mailing any individual.\n" , stdout) ; } @@ -3597,7 +3626,7 @@ #else /* * NEVER EVER edit this manually, fix the mkhelp.pl script instead! - * Generation time: Wed Oct 6 19:13:33 2010 + * Generation time: Wed Dec 15 15:06:02 2010 */ #include "setup.h" #ifdef USE_MANUAL @@ -3607,8 +3636,8 @@ #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 shrunk from 132605 - to 40864 bytes. You can disable the use of compressed help + Thanks to this operation, the size of this data shrunk from 133613 + to 41166 bytes. You can disable the use of compressed help texts by NOT passing -c to the mkhelp.pl tool. */ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd, 0x69, 0x7b, 0x23, 0xc7, 0x91, 0x2e, 0xfa, 0x9d, 0xbf, 0xa2, 0x0c, 0x5d, @@ -4447,2575 +4476,2600 @@ 0xbb, 0xf0, 0x9d, 0xfb, 0x64, 0xf4, 0xea, 0x0b, 0x0e, 0x39, 0x7c, 0x00, 0xbc, 0xab, 0xe0, 0x3c, 0x33, 0x0d, 0x6e, 0xf3, 0x9f, 0x9d, 0x88, 0x23, 0x4e, 0x5a, 0xd6, 0x9d, 0xb8, 0xf8, 0xba, 0x16, 0x03, 0x44, 0x94, 0xa0, - 0xb5, 0xab, 0x2c, 0x5b, 0xdb, 0x98, 0x2b, 0x09, 0x88, 0xc5, 0x08, 0x92, - 0x7a, 0x24, 0xc7, 0xc6, 0x53, 0xa1, 0x50, 0x1e, 0xef, 0xe2, 0x5c, 0xc1, - 0xa5, 0x70, 0x0a, 0xdb, 0x90, 0x04, 0x46, 0x2b, 0x57, 0x39, 0xc2, 0xb2, - 0x8a, 0x5f, 0xf5, 0xa4, 0xfa, 0x29, 0x2b, 0xab, 0xeb, 0x17, 0x84, 0x9f, - 0x7e, 0xf5, 0x05, 0xd0, 0xca, 0xf8, 0xd7, 0x3f, 0xbb, 0xb7, 0xf9, 0x1f, - 0xa2, 0x62, 0x62, 0x04, 0x6b, 0x27, 0xc2, 0xa2, 0xc8, 0xd5, 0x32, 0x87, - 0x98, 0x91, 0xc8, 0x91, 0x94, 0xc2, 0x60, 0x06, 0x45, 0xac, 0xdc, 0xe4, - 0xcd, 0xc1, 0xdb, 0x77, 0x07, 0xa7, 0x8f, 0xe6, 0xdc, 0x84, 0x96, 0x52, - 0x17, 0x6b, 0x06, 0xc3, 0x65, 0x45, 0x70, 0xe4, 0xf3, 0xa8, 0x01, 0xff, - 0x72, 0x13, 0x3e, 0x5e, 0x85, 0xc6, 0xe3, 0x50, 0xe8, 0xf5, 0x19, 0x82, - 0x78, 0x78, 0x38, 0x21, 0xcb, 0x21, 0x50, 0x65, 0xa8, 0x35, 0x42, 0x1c, - 0x8e, 0xcd, 0x3c, 0x96, 0xa2, 0x5c, 0xce, 0x8c, 0x31, 0x4d, 0x4b, 0x36, - 0xb1, 0x32, 0x56, 0xe4, 0xa9, 0x16, 0xd9, 0xec, 0x7e, 0xd1, 0xc5, 0x1a, - 0x74, 0x5f, 0x76, 0x79, 0x43, 0xf3, 0x78, 0xdc, 0x92, 0x2f, 0x53, 0xb8, - 0x50, 0x8f, 0xa8, 0x2b, 0x54, 0xd3, 0xb5, 0x41, 0xe8, 0x9a, 0xc9, 0xc8, - 0x10, 0xea, 0x31, 0xcf, 0x22, 0x75, 0x14, 0xc3, 0xa8, 0xd9, 0xe2, 0xa1, - 0x02, 0xa4, 0x99, 0xcb, 0xf7, 0x95, 0x8a, 0x58, 0xb8, 0x16, 0xfc, 0xcc, - 0x45, 0x03, 0xc9, 0x99, 0x63, 0x70, 0x24, 0x85, 0x40, 0x4b, 0xb6, 0x45, - 0x87, 0xb8, 0xb5, 0xd1, 0xf1, 0xc8, 0x40, 0x38, 0x72, 0x87, 0x6e, 0xe5, - 0x94, 0xc3, 0x74, 0x61, 0xe9, 0xa5, 0x2f, 0xaf, 0xaf, 0x35, 0x23, 0x19, - 0x73, 0x06, 0x7e, 0x03, 0x4d, 0xba, 0x81, 0x6f, 0xa9, 0xf5, 0x6c, 0x89, - 0x8c, 0xeb, 0xe0, 0x53, 0xfd, 0x6b, 0x12, 0x6b, 0xae, 0xa7, 0xd9, 0x28, - 0xbb, 0xba, 0x7a, 0x84, 0x36, 0x24, 0x7f, 0x0c, 0x4d, 0x08, 0x5b, 0xee, - 0x70, 0xe6, 0x08, 0xbf, 0x37, 0x92, 0x34, 0x3f, 0x54, 0x4b, 0x18, 0x88, - 0x95, 0x53, 0x21, 0x4b, 0x1b, 0x93, 0x0a, 0x7c, 0x9c, 0xab, 0x5a, 0x81, - 0x50, 0x94, 0x04, 0x15, 0x85, 0x47, 0xc3, 0x1d, 0x3d, 0xe8, 0x0c, 0x89, - 0x36, 0x7f, 0xff, 0xc7, 0x8f, 0x3f, 0xb5, 0x80, 0x34, 0xb1, 0xeb, 0xc2, - 0xc2, 0xfa, 0x39, 0xac, 0x59, 0xd3, 0x91, 0xe0, 0x24, 0x60, 0x83, 0x95, - 0x87, 0x67, 0xd4, 0x92, 0x37, 0x41, 0xe8, 0x76, 0xf3, 0xc2, 0x28, 0x7c, - 0x87, 0x56, 0x57, 0x55, 0xc3, 0x36, 0xa6, 0xc9, 0x75, 0x0c, 0xdc, 0x06, - 0x7f, 0x79, 0xba, 0xdc, 0x57, 0x65, 0xd5, 0x4d, 0x00, 0x38, 0x97, 0xdb, - 0x1e, 0x0a, 0x52, 0x30, 0x27, 0x5f, 0x9c, 0x38, 0x97, 0x4d, 0xb0, 0x11, - 0x5f, 0xf1, 0x46, 0x34, 0x56, 0xcd, 0x03, 0x24, 0xf6, 0xea, 0xc1, 0xe6, - 0x21, 0x2c, 0x01, 0xa0, 0x74, 0x05, 0x34, 0xa0, 0x0a, 0x0b, 0xb4, 0x16, - 0x64, 0x2c, 0xcb, 0x6b, 0x38, 0x44, 0x22, 0x72, 0x79, 0x28, 0x46, 0x97, - 0x39, 0xf7, 0xd5, 0xf1, 0x65, 0x64, 0xc0, 0x6f, 0x0d, 0xba, 0x0f, 0xca, - 0xe6, 0x38, 0x08, 0x02, 0x87, 0x12, 0x27, 0x78, 0x15, 0xae, 0x70, 0xdf, - 0x7d, 0x58, 0xbe, 0xa3, 0x4d, 0x09, 0x51, 0xc8, 0x21, 0xd1, 0xea, 0x0c, - 0x8e, 0xc0, 0x2f, 0xdb, 0xa9, 0x41, 0xc3, 0x74, 0xff, 0xa3, 0xeb, 0xd1, - 0x5f, 0xda, 0x22, 0x90, 0x2c, 0xc1, 0xad, 0x91, 0x76, 0xdf, 0x3f, 0xe9, - 0x39, 0x40, 0x08, 0x5d, 0x2f, 0x59, 0x46, 0x37, 0x93, 0x51, 0x0b, 0xc0, - 0xdb, 0xba, 0x71, 0x7c, 0x7d, 0x7c, 0x70, 0x64, 0x93, 0xfd, 0x1f, 0xc8, - 0x9c, 0x77, 0x3e, 0xd0, 0x51, 0x22, 0xa0, 0x76, 0xcb, 0xb9, 0x95, 0x57, - 0xc2, 0x9e, 0x39, 0xc3, 0x4d, 0x4b, 0xc4, 0x18, 0x89, 0x6c, 0x8c, 0x76, - 0x2d, 0x9a, 0x1c, 0x4a, 0x04, 0x99, 0x83, 0x59, 0xa2, 0x2a, 0xdd, 0x7a, - 0x84, 0x9e, 0xa1, 0xc0, 0xab, 0xd2, 0x5a, 0xff, 0x28, 0x28, 0x06, 0x18, - 0x10, 0xf6, 0x0d, 0x52, 0xe2, 0xa6, 0x8b, 0x46, 0x6e, 0x54, 0x7c, 0xcd, - 0x29, 0x97, 0xd3, 0x45, 0xf0, 0x6c, 0x90, 0x3e, 0xf7, 0x52, 0x7e, 0xae, - 0xb9, 0x57, 0x8e, 0x01, 0x75, 0xa5, 0x8f, 0x86, 0x49, 0xa2, 0xd7, 0x41, - 0xf1, 0x26, 0x92, 0x34, 0xf8, 0xca, 0xb8, 0x66, 0xa3, 0x2d, 0x6e, 0x7c, - 0x62, 0xa1, 0xf5, 0x75, 0x08, 0x2a, 0x14, 0xfb, 0x0a, 0xe0, 0x49, 0xd0, - 0x7a, 0x25, 0xdd, 0x4a, 0x93, 0xd7, 0xac, 0x6c, 0xd1, 0xa4, 0x51, 0x53, - 0x86, 0xb8, 0x4d, 0x51, 0x92, 0x14, 0x68, 0x23, 0xe3, 0x97, 0x6e, 0xe2, - 0x00, 0xd0, 0x4f, 0x20, 0x1c, 0xc4, 0xd3, 0xec, 0x8f, 0x8d, 0xf9, 0x35, - 0x9b, 0x95, 0x3b, 0x9c, 0x62, 0xa7, 0xc0, 0x71, 0x4b, 0x6c, 0x1b, 0x84, - 0x6d, 0x4e, 0xf6, 0xe7, 0x97, 0x34, 0xb1, 0x4f, 0xbb, 0x0c, 0xa3, 0xe9, - 0xd6, 0x1c, 0x57, 0x15, 0xad, 0x9d, 0x33, 0x95, 0xc3, 0x09, 0x2a, 0x86, - 0x13, 0x9e, 0xa3, 0xa5, 0x11, 0x22, 0x69, 0x0f, 0xa5, 0xdc, 0x1b, 0xb7, - 0x1e, 0x5f, 0xc3, 0x45, 0xb9, 0xbc, 0xc2, 0x2c, 0x38, 0xcc, 0x46, 0x1c, - 0x22, 0x18, 0xa8, 0xaf, 0x8d, 0x9a, 0xa1, 0x08, 0xb9, 0xad, 0x99, 0xe9, - 0xfd, 0xf1, 0x78, 0x9d, 0x6f, 0x57, 0xa7, 0xe3, 0xab, 0xcf, 0x38, 0x56, - 0xcf, 0xf6, 0x34, 0x29, 0x2b, 0x9e, 0xe4, 0xec, 0xe0, 0x60, 0x1b, 0x9b, - 0x20, 0x7f, 0xdf, 0x37, 0x39, 0xba, 0xd6, 0xd8, 0x91, 0x44, 0x74, 0x2e, - 0xe6, 0xc0, 0x76, 0x32, 0x49, 0x36, 0xd4, 0x69, 0xeb, 0x82, 0xd1, 0x15, - 0x71, 0x9d, 0xde, 0x59, 0x59, 0x32, 0x8c, 0xac, 0x25, 0xe3, 0xcd, 0x06, - 0x61, 0xb2, 0xbe, 0xfa, 0xf6, 0x05, 0x8e, 0x21, 0xe2, 0xec, 0xd8, 0x60, - 0x3b, 0xc7, 0xd9, 0x14, 0xf8, 0x0d, 0x31, 0x5c, 0x09, 0xfb, 0x4c, 0xd8, - 0x75, 0x3f, 0xdc, 0xd7, 0x24, 0xd5, 0xed, 0x77, 0xd6, 0xc4, 0xbb, 0x87, - 0xac, 0xbd, 0x58, 0xe6, 0x56, 0x5d, 0x10, 0x41, 0x2a, 0x3a, 0x6a, 0xa0, - 0xe2, 0x4f, 0x26, 0xdb, 0x3a, 0x62, 0x0b, 0xe6, 0x6a, 0x83, 0x32, 0xd4, - 0x6c, 0x8d, 0x05, 0x82, 0x1a, 0x27, 0xfd, 0xec, 0xaa, 0x8f, 0x2a, 0x8d, - 0x5c, 0x21, 0x8f, 0xd5, 0xb2, 0x80, 0xa0, 0x91, 0xba, 0x8b, 0x94, 0xc2, - 0xc9, 0xa4, 0xed, 0x96, 0xd4, 0xc0, 0xf8, 0xdc, 0x59, 0xec, 0x74, 0x30, - 0xba, 0x28, 0xfb, 0x6c, 0xe5, 0xb1, 0xd7, 0x1d, 0x40, 0x1b, 0xa3, 0x79, - 0xc7, 0x79, 0x9e, 0xd2, 0x39, 0x6c, 0x80, 0x1a, 0x23, 0x8a, 0xb1, 0x27, - 0x37, 0xa9, 0x84, 0x84, 0xb1, 0xaf, 0x67, 0x26, 0x4e, 0x3e, 0x38, 0x6a, - 0x96, 0x0b, 0x88, 0x84, 0x9c, 0xb0, 0xdd, 0x26, 0xfb, 0xfa, 0x64, 0xb7, - 0x5a, 0x89, 0x44, 0xf8, 0x2f, 0xc2, 0xdc, 0xe0, 0x75, 0x08, 0x27, 0xeb, - 0x44, 0xe0, 0x20, 0xdf, 0x02, 0xac, 0x5a, 0x73, 0x01, 0xfc, 0x92, 0x6f, - 0x8b, 0xe9, 0xb5, 0x2d, 0x16, 0x89, 0xdf, 0x32, 0xee, 0x11, 0xc8, 0xce, - 0x5c, 0xc9, 0x7a, 0xb1, 0x1c, 0xcd, 0x26, 0xcf, 0xa2, 0x97, 0xf4, 0xcf, - 0xe7, 0x2d, 0xbe, 0x73, 0x49, 0x2a, 0x57, 0x59, 0x58, 0x65, 0x21, 0xfc, - 0xfe, 0x64, 0x8f, 0x4f, 0xc4, 0x03, 0xb5, 0x39, 0x4e, 0x11, 0x4a, 0x3a, - 0x49, 0xaf, 0xd3, 0xb2, 0xd0, 0x34, 0x42, 0xbc, 0xb0, 0xb6, 0x5c, 0x16, - 0xaf, 0xcf, 0xee, 0xde, 0x67, 0xd1, 0x28, 0x2d, 0xa3, 0x37, 0x47, 0xcf, - 0xa4, 0xe0, 0x5e, 0xb1, 0x9c, 0xf9, 0xc2, 0xac, 0x00, 0x04, 0x46, 0xa5, - 0xed, 0x2e, 0xc3, 0xf4, 0x2d, 0x47, 0xd3, 0x46, 0xed, 0x9b, 0xdb, 0x64, - 0x55, 0x2b, 0x2a, 0xce, 0xb0, 0x63, 0x45, 0x52, 0xb7, 0xb3, 0x3b, 0x92, - 0x43, 0xdd, 0x6e, 0xf5, 0xda, 0x37, 0x05, 0x7a, 0x9a, 0x3f, 0x8d, 0xa0, - 0xb0, 0x6a, 0x5d, 0xb5, 0xe4, 0x7f, 0x90, 0x01, 0xef, 0xfb, 0xf0, 0xf0, - 0x5c, 0xdc, 0x39, 0x08, 0xdd, 0x0b, 0x30, 0x24, 0x1e, 0xc3, 0xbe, 0xfd, - 0xb4, 0x6a, 0x5a, 0x95, 0xb2, 0x9b, 0x86, 0x59, 0xd4, 0x27, 0xe5, 0xea, - 0x7a, 0x5d, 0x2d, 0xc5, 0xe8, 0x04, 0xcf, 0xea, 0x31, 0x36, 0x8d, 0xf8, - 0x14, 0x6f, 0x04, 0xa9, 0xcf, 0x72, 0xed, 0xf2, 0x41, 0x48, 0xc7, 0x5c, - 0xd2, 0xb6, 0x81, 0xbe, 0xba, 0xf4, 0xf0, 0xc6, 0x56, 0xe0, 0x33, 0x5f, - 0x0a, 0xa0, 0xf9, 0xc1, 0x82, 0xcd, 0x3c, 0xd1, 0xee, 0xe0, 0xa1, 0x17, - 0x56, 0x17, 0x53, 0x00, 0x7c, 0x94, 0x11, 0x6b, 0x78, 0xa0, 0x10, 0x8e, - 0x51, 0x1b, 0x0d, 0xb7, 0x2d, 0xf6, 0xb5, 0x29, 0x87, 0x27, 0xe5, 0xc2, - 0x82, 0xf7, 0x88, 0x97, 0x5d, 0xc7, 0xc0, 0x5f, 0x0f, 0x28, 0x2f, 0xa5, - 0x73, 0xa0, 0x90, 0x66, 0xeb, 0xe6, 0x2d, 0xdf, 0x06, 0xa0, 0xbe, 0x76, - 0x0f, 0xab, 0x2c, 0x2e, 0xc1, 0xbd, 0x42, 0x6e, 0xc1, 0xd7, 0xcd, 0x22, - 0x68, 0xdc, 0x8c, 0x3b, 0xbd, 0xd0, 0x7e, 0x65, 0x05, 0xfa, 0x7c, 0xf3, - 0xf5, 0x22, 0xd4, 0x45, 0x77, 0x8c, 0xd2, 0x47, 0x35, 0x4b, 0xa3, 0xcd, - 0x20, 0xfe, 0xc2, 0xea, 0xf8, 0x72, 0xa8, 0xd3, 0x60, 0x10, 0x1e, 0x27, - 0x30, 0xf2, 0x2b, 0x66, 0x7e, 0xad, 0xb9, 0xdc, 0xe7, 0x82, 0x59, 0x18, - 0x55, 0xeb, 0x53, 0x6b, 0xcd, 0xa9, 0x40, 0x4c, 0x76, 0xcd, 0x0c, 0x9c, - 0x89, 0x24, 0xe1, 0x8f, 0xda, 0xae, 0x27, 0xf4, 0x26, 0x13, 0x09, 0xe2, - 0x11, 0x68, 0x27, 0x5c, 0x91, 0xfa, 0x41, 0x74, 0x30, 0x37, 0x4d, 0x3c, - 0xd2, 0x4a, 0x61, 0x48, 0xdc, 0x69, 0x54, 0x77, 0xb9, 0x4d, 0x1a, 0x26, - 0x01, 0xb5, 0x09, 0x04, 0x33, 0x23, 0xb9, 0x6a, 0x67, 0x7f, 0x37, 0xac, - 0x0b, 0x34, 0xd7, 0xf2, 0x11, 0x28, 0x96, 0xf3, 0xdb, 0x45, 0xdf, 0x9f, - 0xa8, 0x24, 0xd6, 0x46, 0x2f, 0x0c, 0xbb, 0xbd, 0xfd, 0xfa, 0xe4, 0xf4, - 0x78, 0x2b, 0x7a, 0x9d, 0x00, 0x57, 0xa4, 0x4a, 0x14, 0x38, 0xbe, 0xbf, - 0x93, 0x4f, 0x8c, 0xfc, 0x55, 0x09, 0x6d, 0x8b, 0x1f, 0x51, 0x87, 0x05, - 0xa4, 0x69, 0x39, 0x11, 0x98, 0x83, 0x64, 0x66, 0x65, 0x30, 0x5c, 0x1a, - 0xb2, 0x3a, 0xc4, 0xd5, 0x00, 0xf4, 0xa3, 0xa5, 0xb8, 0x53, 0x1c, 0x85, - 0xb5, 0x70, 0x3c, 0xde, 0x05, 0x93, 0x91, 0xc5, 0x01, 0xf3, 0xd8, 0xd5, - 0x2a, 0x57, 0xa9, 0x8b, 0xbe, 0xae, 0x68, 0x5e, 0x91, 0xfe, 0x2c, 0xd1, - 0xe8, 0x58, 0xb5, 0x59, 0x36, 0x71, 0xf8, 0x92, 0x52, 0xb2, 0x86, 0xe7, - 0x1b, 0xac, 0xdd, 0x5f, 0x69, 0xed, 0xfe, 0xba, 0x9c, 0xdf, 0xf6, 0xb5, - 0x34, 0xa1, 0x02, 0x7a, 0x14, 0xed, 0x67, 0xef, 0x3b, 0x17, 0x83, 0x82, - 0xc0, 0x60, 0x31, 0x74, 0x36, 0x6b, 0xf4, 0xc5, 0x01, 0xbc, 0x5c, 0xef, - 0xb1, 0x02, 0x3f, 0xa1, 0xf0, 0xc0, 0x91, 0xa3, 0x34, 0xb9, 0x31, 0x87, - 0x25, 0xb3, 0x8e, 0xd8, 0xb1, 0x62, 0x89, 0xda, 0x74, 0x67, 0xe0, 0xb1, - 0x15, 0x1b, 0x90, 0xb5, 0x85, 0xa6, 0x9d, 0xdd, 0x58, 0x8d, 0x3b, 0x08, - 0xb0, 0x1a, 0x5b, 0x42, 0xa2, 0x40, 0xca, 0xb6, 0x4d, 0xba, 0xe6, 0x5d, - 0x05, 0x46, 0x09, 0x4e, 0x64, 0x04, 0x59, 0x26, 0xa5, 0xda, 0x35, 0x2b, - 0x09, 0x81, 0x91, 0x21, 0x7f, 0x17, 0x1e, 0xef, 0xc7, 0x06, 0x18, 0xd5, - 0x06, 0x27, 0x02, 0x3d, 0xcb, 0x06, 0xdd, 0x06, 0xe1, 0x8c, 0xa7, 0x99, - 0x54, 0x3d, 0xba, 0x0f, 0xdd, 0x9a, 0xff, 0x89, 0xfb, 0x9e, 0x2f, 0x33, - 0xa5, 0xc4, 0x7e, 0x4b, 0x84, 0x7c, 0x08, 0x99, 0x6a, 0x18, 0x6b, 0xc8, - 0x3a, 0x82, 0x18, 0x71, 0xe6, 0x9b, 0x98, 0x07, 0x25, 0xbf, 0x55, 0xc5, - 0x58, 0x5b, 0x6c, 0xa8, 0x1f, 0x54, 0xf3, 0x70, 0x9c, 0xfa, 0x88, 0xc8, - 0x2a, 0x2b, 0x52, 0xd9, 0x16, 0x67, 0x14, 0x0c, 0xf5, 0xe6, 0x66, 0x84, - 0xb8, 0x81, 0x1b, 0xb8, 0xe4, 0x78, 0x17, 0x7a, 0x65, 0xda, 0x67, 0x30, - 0xdf, 0x5b, 0xf0, 0xf5, 0xa2, 0x2d, 0x6e, 0x4c, 0xd3, 0xa9, 0x82, 0x49, - 0x06, 0x56, 0x4e, 0x15, 0xf3, 0x2d, 0x6c, 0xc7, 0xe0, 0x5d, 0x49, 0x2c, - 0xb5, 0xd6, 0x3a, 0xcd, 0xa0, 0x91, 0x10, 0x69, 0x40, 0x4c, 0x67, 0x1e, - 0xd0, 0xe9, 0x80, 0x68, 0xab, 0xf1, 0x08, 0xe7, 0x6d, 0x48, 0xe4, 0x7a, - 0xd2, 0x52, 0xa7, 0x9b, 0x61, 0xb8, 0x69, 0x8b, 0x2c, 0xb0, 0xc1, 0x95, - 0x03, 0x6c, 0x49, 0xcc, 0xd3, 0x3c, 0x4b, 0x59, 0xb7, 0x98, 0xdd, 0x67, - 0x75, 0x5a, 0x5d, 0xb9, 0x80, 0x50, 0x17, 0x28, 0x2b, 0xbe, 0x10, 0x2d, - 0x08, 0xe4, 0x47, 0x15, 0xe0, 0xf2, 0xaf, 0x9d, 0x2c, 0x2a, 0xd3, 0x58, - 0xbc, 0x61, 0xb8, 0xc6, 0xcd, 0x70, 0xc3, 0x40, 0x14, 0x8d, 0x7c, 0x81, - 0x37, 0xe2, 0x07, 0x80, 0x6c, 0x40, 0x00, 0x9a, 0x54, 0x2e, 0x51, 0xa7, - 0x28, 0x9c, 0xf2, 0x62, 0xae, 0x95, 0xfc, 0x1e, 0x58, 0x69, 0xd7, 0x94, - 0x81, 0x43, 0xf2, 0xe5, 0x4d, 0xfc, 0xf0, 0x30, 0x28, 0x12, 0xa9, 0x8b, - 0x56, 0x14, 0x53, 0x24, 0x7a, 0x56, 0xeb, 0xbf, 0x71, 0x9a, 0x7f, 0xb2, - 0x88, 0xa7, 0x88, 0x76, 0x64, 0x7e, 0xb4, 0xae, 0xce, 0x56, 0x35, 0x5a, - 0x41, 0x2a, 0x00, 0x4a, 0xb9, 0xf4, 0x54, 0xea, 0xc3, 0x04, 0x72, 0x1c, - 0x03, 0x43, 0x15, 0xc2, 0x8a, 0x38, 0x04, 0x2b, 0x4a, 0x27, 0x0d, 0xa7, - 0x93, 0x86, 0x76, 0xb1, 0xfb, 0x87, 0x77, 0xce, 0x0d, 0x82, 0xb5, 0x8d, - 0x91, 0xda, 0xa1, 0x11, 0x59, 0xc2, 0xad, 0x9b, 0x77, 0x8c, 0xd1, 0x06, - 0x48, 0xdd, 0x9a, 0x2c, 0x1b, 0xda, 0x6e, 0xfd, 0x7d, 0x2b, 0xb2, 0x1b, - 0xe4, 0x5e, 0x80, 0xf7, 0xf0, 0x13, 0x99, 0xbb, 0xd3, 0x01, 0xc9, 0x8b, - 0xea, 0x8d, 0x8d, 0xcb, 0xe0, 0x4a, 0x50, 0x38, 0x64, 0x8a, 0x97, 0x87, - 0xe7, 0xef, 0xbf, 0x39, 0x3e, 0x3e, 0x3f, 0x39, 0x22, 0xde, 0x2f, 0x32, - 0xa5, 0xfb, 0xe8, 0xed, 0xe5, 0xb7, 0xa7, 0x06, 0xcc, 0x61, 0xeb, 0xd3, - 0xe0, 0xd6, 0x6c, 0xf8, 0x45, 0x73, 0xa7, 0xe9, 0x7c, 0xf9, 0xd0, 0x43, - 0x79, 0x29, 0x52, 0x34, 0x0e, 0x4e, 0xbe, 0xef, 0x45, 0x5f, 0x9f, 0xf7, - 0xdf, 0x7d, 0xdf, 0x48, 0x9e, 0xaa, 0x04, 0xe5, 0xd5, 0xcf, 0xb9, 0x0b, - 0xd1, 0x03, 0x62, 0x98, 0x9f, 0xbb, 0x91, 0x58, 0x0b, 0xb8, 0xf2, 0xc7, - 0x5d, 0xf6, 0x55, 0xdb, 0x7d, 0x78, 0xdb, 0x3b, 0xe3, 0x92, 0xec, 0x7d, - 0xcb, 0x6d, 0x17, 0xcf, 0x38, 0xd1, 0x68, 0x10, 0x12, 0xd6, 0x2a, 0x7a, - 0x49, 0xff, 0xb4, 0x65, 0x6b, 0x6e, 0x73, 0x91, 0xfa, 0xe8, 0x3c, 0x80, - 0xae, 0x70, 0x0e, 0xac, 0x81, 0xc5, 0x2d, 0xa9, 0x25, 0x41, 0xd3, 0x8f, - 0xd4, 0x49, 0x98, 0x37, 0xc0, 0x29, 0x5d, 0x0b, 0xbe, 0xa8, 0x2f, 0xcc, - 0x7b, 0x49, 0xbb, 0xf3, 0xf1, 0x57, 0x4c, 0x53, 0xa5, 0x4e, 0x3f, 0x08, - 0x88, 0xd0, 0x98, 0x22, 0x3f, 0x3a, 0x70, 0x80, 0x30, 0x2a, 0xb3, 0x70, - 0x23, 0x98, 0x9f, 0xa2, 0x6e, 0xb4, 0xe0, 0xb0, 0x0b, 0x60, 0x82, 0x43, - 0xf6, 0x40, 0x83, 0x34, 0xfa, 0x01, 0xa3, 0x23, 0xf4, 0x04, 0x27, 0x21, - 0xc4, 0x48, 0x70, 0x38, 0x40, 0x5a, 0x9d, 0xac, 0x6c, 0x35, 0x5e, 0x01, - 0xc8, 0xe4, 0xdf, 0x87, 0x8d, 0x70, 0x9b, 0x8f, 0xa2, 0x97, 0x08, 0xf8, - 0x6b, 0x0f, 0xa4, 0xd6, 0xba, 0xb1, 0xdf, 0x24, 0xf9, 0x28, 0xc9, 0xb3, - 0xa2, 0x9e, 0x43, 0xa7, 0x39, 0xf7, 0x5a, 0x9f, 0x93, 0x9b, 0x51, 0x68, - 0xff, 0x86, 0xe1, 0x15, 0x42, 0x78, 0x22, 0x1e, 0xec, 0x46, 0xb6, 0x50, - 0x17, 0xb1, 0x73, 0xdd, 0x5e, 0xd4, 0xe5, 0x4c, 0x41, 0xfe, 0x49, 0xac, - 0xeb, 0x0a, 0xbe, 0x91, 0x34, 0x9e, 0x76, 0x7b, 0x4d, 0x78, 0xc4, 0xae, - 0xae, 0x7a, 0x97, 0x36, 0x4e, 0x5a, 0xb3, 0x42, 0xaa, 0xb1, 0x8e, 0x43, - 0x10, 0x5d, 0xd2, 0x42, 0x41, 0x17, 0x43, 0x0b, 0x5d, 0xd1, 0xc0, 0xb2, - 0x72, 0xcd, 0x55, 0x53, 0xb5, 0xd6, 0xd5, 0x66, 0xa9, 0x72, 0x5e, 0x0d, - 0x8d, 0x84, 0xb6, 0x6f, 0xe9, 0xec, 0x92, 0xf0, 0x0e, 0xed, 0xf9, 0x56, - 0xd7, 0xee, 0x29, 0xcb, 0xaa, 0x5f, 0x0d, 0x87, 0x07, 0xe7, 0x27, 0xf5, - 0xa5, 0xa6, 0x4f, 0xfb, 0x6f, 0xad, 0x46, 0xfc, 0x96, 0x51, 0x8a, 0xd7, - 0x4d, 0x79, 0x06, 0xc8, 0x3c, 0x62, 0xe9, 0x9a, 0x43, 0x45, 0x04, 0x8a, - 0xea, 0x5b, 0xba, 0xcc, 0xd6, 0x44, 0x38, 0x2a, 0xf8, 0x90, 0x9a, 0x38, - 0xf3, 0xa8, 0x52, 0x7b, 0x92, 0x04, 0xc9, 0xdf, 0x90, 0xa6, 0xbe, 0x91, - 0x7a, 0x66, 0x57, 0xe9, 0x35, 0x07, 0xe9, 0xe3, 0x67, 0x1b, 0x0e, 0x93, - 0x03, 0x60, 0xd2, 0x12, 0xb0, 0xfe, 0x49, 0x2f, 0x31, 0x03, 0xf3, 0x4c, - 0x73, 0xcc, 0x44, 0x70, 0x1e, 0x58, 0x4d, 0x89, 0x06, 0x4a, 0x94, 0xbd, - 0x9c, 0x06, 0x21, 0x13, 0xd3, 0xc4, 0x47, 0xe4, 0x98, 0x62, 0x82, 0xbb, - 0xdc, 0x37, 0x0a, 0x0d, 0xb1, 0x49, 0xae, 0x56, 0x07, 0x4f, 0x5f, 0x16, - 0x3b, 0x7a, 0x38, 0x61, 0x15, 0x99, 0xc5, 0xd6, 0xc5, 0x4e, 0x7f, 0x7b, - 0x23, 0x6b, 0x03, 0x1b, 0x20, 0x19, 0x90, 0xe1, 0x9a, 0xc3, 0x31, 0x0c, - 0xa2, 0xb3, 0x45, 0x20, 0x7d, 0xdd, 0x24, 0x69, 0xee, 0x1d, 0xa2, 0x3e, - 0x9f, 0x1d, 0x5c, 0xa1, 0x39, 0x59, 0x66, 0x3c, 0x59, 0xb5, 0x20, 0x8f, - 0xae, 0xa0, 0x4c, 0x5b, 0xca, 0xa7, 0x18, 0xdf, 0x85, 0xe7, 0x8c, 0x66, - 0x52, 0x26, 0xc5, 0x82, 0xf4, 0xd0, 0x46, 0xf5, 0x4f, 0x31, 0x70, 0x02, - 0xf9, 0x80, 0x61, 0xa5, 0x0b, 0x04, 0xe1, 0x44, 0xc0, 0xe2, 0x5f, 0x55, - 0xdc, 0x2e, 0xf0, 0x78, 0xd2, 0x29, 0xda, 0x54, 0xfc, 0xc2, 0xd6, 0x02, - 0x85, 0xe2, 0x33, 0xe0, 0xc3, 0x1e, 0xa0, 0xfa, 0x5b, 0x79, 0x39, 0xdf, - 0xbe, 0x87, 0xe1, 0xf1, 0x7e, 0xe0, 0xb4, 0x25, 0x6b, 0xda, 0x41, 0xa6, - 0x04, 0x13, 0x70, 0xb0, 0x5d, 0xce, 0x81, 0x6c, 0x6c, 0x07, 0x40, 0xe8, - 0xa2, 0x4e, 0x28, 0xf6, 0x43, 0x03, 0x0b, 0x2a, 0x03, 0xc8, 0xca, 0x77, - 0x02, 0x0c, 0x31, 0xc9, 0x96, 0xcc, 0xe0, 0xe4, 0xd3, 0xba, 0x03, 0x27, - 0x91, 0xd2, 0x8e, 0x05, 0x3b, 0x85, 0xd8, 0x8b, 0xd3, 0x52, 0x7c, 0xc2, - 0x41, 0x33, 0xec, 0x47, 0x7f, 0xf9, 0x4b, 0x2f, 0xfa, 0x4b, 0x87, 0xfe, - 0x2b, 0xe9, 0x3f, 0x5a, 0xcf, 0xbf, 0x48, 0x2d, 0x83, 0xbf, 0xdc, 0xd1, - 0xfd, 0x19, 0x71, 0x49, 0xc2, 0x62, 0xca, 0x20, 0x02, 0x1e, 0xa7, 0xbe, - 0x05, 0x5a, 0x43, 0x42, 0x0c, 0xb5, 0x3e, 0x07, 0x1f, 0x7e, 0x58, 0xb0, - 0x26, 0x6e, 0xa9, 0x24, 0xb5, 0x86, 0x36, 0x6c, 0x39, 0x9b, 0x4b, 0x38, - 0x8a, 0x6e, 0x3b, 0xc8, 0xba, 0xa1, 0x45, 0xc6, 0x51, 0xf7, 0x13, 0xf3, - 0x9a, 0x97, 0x96, 0xda, 0x1a, 0x06, 0x69, 0xe2, 0x35, 0xa3, 0xeb, 0x52, - 0xeb, 0x40, 0x4a, 0x9c, 0x52, 0x5b, 0xbc, 0xa6, 0xa8, 0xe1, 0x67, 0x73, - 0xd8, 0xea, 0x01, 0x11, 0xaa, 0x8c, 0x55, 0x59, 0x21, 0x5b, 0xa5, 0x17, - 0x37, 0x2b, 0xe8, 0x9a, 0x3a, 0x24, 0x57, 0xcb, 0x99, 0x46, 0xd9, 0x52, - 0x56, 0xa4, 0x29, 0x7c, 0x5b, 0xe1, 0x52, 0x55, 0xd7, 0xad, 0x42, 0x66, - 0xc8, 0x57, 0x68, 0x80, 0xdd, 0x7e, 0xb7, 0x8a, 0x8d, 0x68, 0x61, 0x3c, - 0x6d, 0x75, 0x6e, 0x82, 0xa2, 0x34, 0x8d, 0xda, 0x98, 0xb0, 0x95, 0x2a, - 0xfc, 0x97, 0x80, 0xec, 0x0b, 0xd0, 0x46, 0xe6, 0xbd, 0x49, 0xf0, 0x12, - 0x56, 0x26, 0xa2, 0x7a, 0x3b, 0xb1, 0xd6, 0x46, 0x2d, 0x12, 0x05, 0x7e, - 0xd3, 0x77, 0xd3, 0x32, 0x50, 0x84, 0xfa, 0x7d, 0xa9, 0x9c, 0xa9, 0x78, - 0xd0, 0x90, 0x5a, 0x71, 0x39, 0xb1, 0xc6, 0x53, 0xa4, 0xb3, 0x45, 0xc3, - 0xf2, 0xc8, 0x6b, 0xec, 0x85, 0x5e, 0x1e, 0x06, 0x70, 0xf0, 0xb9, 0x9a, - 0xce, 0xfd, 0x5c, 0xd9, 0xc8, 0x30, 0x03, 0x8a, 0x80, 0x18, 0xa7, 0x00, - 0x2a, 0xe3, 0xe3, 0x76, 0x5a, 0xbc, 0xf6, 0x0d, 0x33, 0x15, 0x8f, 0xe9, - 0x55, 0xd4, 0x59, 0xab, 0xa5, 0x74, 0xea, 0x2f, 0x9c, 0x32, 0xec, 0x8b, - 0xee, 0xb8, 0x60, 0xfd, 0x8d, 0x61, 0x94, 0x13, 0x7c, 0xb6, 0x29, 0x10, - 0x49, 0xb4, 0x76, 0xa1, 0x4b, 0x8a, 0x0c, 0x99, 0xd3, 0x1a, 0x5f, 0x8c, - 0x38, 0xb1, 0x04, 0x3a, 0x52, 0x4f, 0x25, 0x57, 0x42, 0x5d, 0x07, 0x7b, - 0x6a, 0x36, 0x16, 0xce, 0xe1, 0xbf, 0x55, 0xf4, 0x37, 0xb5, 0x41, 0x6c, - 0x9a, 0xb6, 0xf7, 0x37, 0xbb, 0xc7, 0xb6, 0xd4, 0x4a, 0x2e, 0x79, 0xa9, - 0x6b, 0xa0, 0x5b, 0xc2, 0x2b, 0xc8, 0x81, 0x09, 0xa5, 0x90, 0xea, 0xe9, - 0xbd, 0xe5, 0x7c, 0xe2, 0xc2, 0x04, 0x0d, 0xeb, 0x65, 0x2d, 0x55, 0x43, - 0xd1, 0xe1, 0x1e, 0x15, 0x74, 0x4e, 0x89, 0xc7, 0x73, 0x16, 0xf8, 0x1c, - 0x0a, 0x27, 0x20, 0x67, 0x39, 0x29, 0xb1, 0x8d, 0x9d, 0xd9, 0xdd, 0x72, - 0x71, 0xa0, 0xa8, 0xeb, 0x27, 0x85, 0x1e, 0x55, 0x0d, 0xeb, 0xdc, 0x64, - 0x02, 0xf7, 0xd3, 0xd9, 0x67, 0xcd, 0x4a, 0x19, 0x83, 0x9f, 0x65, 0xf3, - 0x28, 0x00, 0x4c, 0xe9, 0xeb, 0xb3, 0x37, 0xc7, 0x2e, 0xe3, 0x55, 0x4c, - 0x7d, 0xfc, 0x49, 0x2b, 0xc4, 0xe3, 0x00, 0xf9, 0x04, 0x86, 0x00, 0xd1, - 0x6b, 0xd6, 0xe8, 0x94, 0x25, 0xba, 0x4e, 0xca, 0xc5, 0xfd, 0x32, 0x9d, - 0x6c, 0x02, 0xa4, 0xe3, 0xdd, 0xdb, 0x93, 0xef, 0xfb, 0x62, 0x29, 0x16, - 0x45, 0xce, 0x70, 0x2a, 0x0c, 0xe5, 0x42, 0xbc, 0x09, 0xb3, 0x16, 0x4c, - 0x16, 0xa5, 0x1a, 0x1c, 0x33, 0x45, 0x25, 0x42, 0xae, 0x5f, 0x3a, 0x17, - 0x21, 0x46, 0x1a, 0xa4, 0x7b, 0xe3, 0x6c, 0x4e, 0xec, 0x1b, 0x58, 0x4b, - 0x02, 0xa0, 0xd1, 0x92, 0xbd, 0x5b, 0x5d, 0x89, 0xe8, 0xe0, 0xfc, 0xfc, - 0xe8, 0xe0, 0xf2, 0xc0, 0xcd, 0x0d, 0xe0, 0x46, 0xe0, 0x73, 0x10, 0x67, - 0x58, 0xb1, 0xd7, 0x4a, 0x49, 0xdd, 0xdf, 0x73, 0x86, 0x60, 0x9d, 0xf3, - 0x9d, 0x5f, 0x9c, 0xb1, 0x99, 0xf1, 0xf7, 0x7f, 0x39, 0xf0, 0x15, 0xe2, - 0x50, 0x0a, 0xa9, 0x59, 0xa8, 0x6b, 0x6f, 0x8b, 0xc7, 0x77, 0xef, 0xc6, - 0xa7, 0x71, 0x42, 0x22, 0xc7, 0x45, 0xef, 0x79, 0x43, 0xf3, 0xb1, 0x13, - 0x4e, 0x6c, 0x35, 0xb0, 0x00, 0xbd, 0x96, 0xdc, 0xb2, 0x60, 0x22, 0x99, - 0xe7, 0xa7, 0x86, 0xf5, 0x64, 0x8b, 0x35, 0x8d, 0x92, 0x87, 0x64, 0xbc, - 0x2c, 0xc1, 0xbb, 0xd8, 0x9b, 0xc1, 0xf4, 0x35, 0xe1, 0x95, 0xaa, 0x3b, - 0xea, 0xeb, 0xdb, 0xe3, 0x61, 0x13, 0x85, 0x03, 0x49, 0x4a, 0x67, 0x26, - 0x55, 0x31, 0x06, 0x3a, 0x5a, 0x5f, 0x17, 0xa3, 0x71, 0x76, 0x04, 0x48, - 0x91, 0xe8, 0xdc, 0xe8, 0xb1, 0xb1, 0x20, 0x9f, 0x10, 0xe3, 0xeb, 0x5b, - 0x88, 0xa9, 0x4c, 0x9c, 0x3e, 0x68, 0x3c, 0x54, 0xba, 0x1a, 0x0f, 0x2c, - 0x26, 0x35, 0xbd, 0x9f, 0xca, 0xa7, 0x42, 0x06, 0x55, 0x37, 0xf5, 0x28, - 0x64, 0x8c, 0x3e, 0x05, 0xa8, 0x62, 0x44, 0x21, 0x36, 0xfd, 0x39, 0xe6, - 0x58, 0xa4, 0x47, 0x49, 0x2a, 0x26, 0x11, 0x97, 0xff, 0xda, 0xde, 0x1d, - 0xec, 0x74, 0x9a, 0xa3, 0x47, 0xe2, 0x19, 0x2c, 0xe3, 0xf1, 0x5c, 0xee, - 0x67, 0x01, 0xe6, 0xcd, 0x3e, 0x3c, 0x40, 0xe1, 0xa0, 0x24, 0xf3, 0x21, - 0x6e, 0xa1, 0x6d, 0x2c, 0xfd, 0xb3, 0x86, 0x77, 0x48, 0x3c, 0x9c, 0x9e, - 0x25, 0xcf, 0x33, 0x84, 0x95, 0xc6, 0x6c, 0x2c, 0x83, 0x9f, 0xa0, 0xd3, - 0xbe, 0xc0, 0xf3, 0x89, 0x44, 0x3b, 0xd4, 0xd6, 0xf9, 0x51, 0xdd, 0x65, - 0x7d, 0x98, 0xa0, 0xa3, 0x01, 0xf7, 0xf1, 0x5a, 0x6e, 0x57, 0x71, 0x8b, - 0x5a, 0xa1, 0xfb, 0x56, 0xf0, 0xd5, 0x03, 0xc1, 0x3f, 0x0e, 0x35, 0x0d, - 0xce, 0x83, 0xe3, 0xea, 0x81, 0x1c, 0x55, 0xc5, 0x9a, 0x93, 0xe6, 0x6f, - 0xce, 0x2a, 0x65, 0x00, 0xf1, 0x7b, 0xf3, 0xb6, 0xad, 0x94, 0x8d, 0x8e, - 0xb4, 0xe7, 0xbe, 0x5c, 0xb8, 0x6a, 0xa9, 0x43, 0x15, 0x96, 0xa0, 0x44, - 0xb6, 0xf3, 0x02, 0xac, 0x81, 0x07, 0x31, 0x29, 0x95, 0xd4, 0xc1, 0xa9, - 0xc0, 0xa9, 0x48, 0x40, 0xad, 0x68, 0x51, 0x32, 0x2c, 0xf1, 0xb8, 0x7b, - 0x2f, 0x14, 0xbf, 0xf7, 0xbb, 0xb6, 0xa2, 0xdb, 0xfb, 0x8a, 0xcf, 0x92, - 0x25, 0xa2, 0xc3, 0x89, 0xdf, 0x9e, 0x43, 0x22, 0x34, 0x51, 0xa9, 0xff, - 0xda, 0x99, 0xd5, 0xcc, 0xee, 0xc6, 0x3a, 0x2a, 0x2d, 0x79, 0x13, 0x24, - 0x54, 0x80, 0x2c, 0xd8, 0xb2, 0x8b, 0xd2, 0x60, 0x3d, 0x36, 0x71, 0x09, - 0x3b, 0xc8, 0x18, 0x62, 0x21, 0x36, 0xe8, 0x3b, 0x3d, 0x04, 0xd4, 0xd7, - 0x35, 0x49, 0xc7, 0x6b, 0x42, 0xaa, 0x0d, 0x64, 0xc4, 0xd7, 0xd7, 0x65, - 0xef, 0x40, 0x61, 0x99, 0xb5, 0xef, 0x81, 0x9f, 0x35, 0x99, 0x6c, 0x3e, - 0xd9, 0x12, 0x23, 0x86, 0xab, 0x9c, 0x0d, 0xc7, 0xdd, 0xbf, 0xa8, 0x3c, - 0xaa, 0x70, 0xe0, 0x4b, 0x10, 0xb6, 0x6d, 0xab, 0x8b, 0x2c, 0x7b, 0x2c, - 0xcf, 0x66, 0x4a, 0x92, 0x4e, 0xd9, 0x87, 0x69, 0xe9, 0x25, 0x89, 0x5c, - 0xc9, 0x64, 0xad, 0x96, 0x29, 0xd0, 0x0c, 0xf1, 0x43, 0x3a, 0x5b, 0xce, - 0xbc, 0xe7, 0x99, 0x71, 0x79, 0xcb, 0xa4, 0x59, 0xe1, 0x50, 0x6d, 0x1a, - 0x0d, 0x79, 0x5a, 0xfd, 0x5e, 0x3a, 0x43, 0x20, 0x13, 0x4b, 0x0c, 0x11, - 0xbc, 0x2a, 0xac, 0xfe, 0xd3, 0x78, 0x38, 0x8b, 0x3f, 0x5d, 0x88, 0x0c, - 0xc1, 0x71, 0x2b, 0x13, 0x71, 0x9c, 0x32, 0x05, 0xd5, 0x37, 0xd5, 0x86, - 0x81, 0x0a, 0x06, 0xe2, 0x94, 0x90, 0x60, 0xa0, 0x79, 0xc9, 0xa9, 0x72, - 0x23, 0x6a, 0xe2, 0x3e, 0x9d, 0x94, 0x37, 0xed, 0x78, 0x83, 0xb2, 0x8e, - 0x98, 0x77, 0x24, 0x08, 0x25, 0x1c, 0x5e, 0x82, 0xa5, 0x82, 0xcf, 0x78, - 0x5b, 0x0c, 0xc7, 0x2e, 0xdb, 0x3e, 0x26, 0xba, 0xbb, 0xe2, 0xf4, 0x88, - 0xa6, 0x9e, 0xa0, 0x61, 0x71, 0x03, 0x3b, 0xa2, 0x08, 0xbc, 0xbd, 0xed, - 0xf2, 0x2d, 0xd9, 0xfd, 0x46, 0xad, 0x22, 0x02, 0x5b, 0x84, 0x60, 0x6a, - 0xad, 0x0e, 0xce, 0x11, 0x31, 0xb7, 0xe9, 0xb4, 0x59, 0x20, 0x71, 0x05, - 0x65, 0x2a, 0xea, 0xce, 0x24, 0x8c, 0xf5, 0x4d, 0x57, 0x0d, 0xf8, 0x28, - 0x84, 0xac, 0x1e, 0xed, 0x9e, 0xa4, 0x3e, 0x44, 0xdd, 0x6b, 0xe9, 0xe6, - 0x2b, 0xff, 0x50, 0xad, 0x39, 0xef, 0x04, 0xb7, 0x5b, 0xa4, 0xd8, 0x8f, - 0xf6, 0x76, 0x76, 0xbe, 0xe9, 0x45, 0x4f, 0xa4, 0x74, 0xec, 0xee, 0x57, - 0xad, 0x2b, 0x24, 0x0b, 0x84, 0x2d, 0x56, 0xfd, 0x33, 0xbe, 0x03, 0xaf, - 0xd7, 0x45, 0xc3, 0x8c, 0x58, 0x53, 0x9c, 0x2c, 0x03, 0xdb, 0xb2, 0x2c, - 0xfe, 0x9a, 0xad, 0x82, 0x19, 0xbb, 0x0e, 0x85, 0x30, 0x43, 0xdc, 0x10, - 0xef, 0xde, 0x0d, 0xfd, 0xc6, 0xde, 0x7b, 0xdb, 0x58, 0xf4, 0xd3, 0x92, - 0xcf, 0x5e, 0xdc, 0xf0, 0xf1, 0x1f, 0x2d, 0x73, 0x9c, 0x64, 0x76, 0x84, - 0x4a, 0x39, 0x22, 0xb6, 0xad, 0x43, 0x67, 0x90, 0x5a, 0xd2, 0xbe, 0x74, - 0x6a, 0x59, 0x99, 0xce, 0xa0, 0xbd, 0xde, 0x23, 0xe2, 0x67, 0x5c, 0x41, - 0xd8, 0x1f, 0x48, 0x61, 0x42, 0xff, 0x72, 0x4c, 0xbc, 0xe2, 0x21, 0xda, - 0x4e, 0xe8, 0x61, 0xac, 0x4f, 0x96, 0xb5, 0x2a, 0xd1, 0x53, 0x61, 0x60, - 0x86, 0x29, 0x1c, 0x73, 0x64, 0xfc, 0xb4, 0x85, 0x96, 0xe9, 0xe1, 0x81, - 0x48, 0xd3, 0xe0, 0xb7, 0x53, 0x7e, 0x60, 0xba, 0xea, 0x35, 0xd5, 0x0e, - 0x0e, 0x0b, 0x84, 0x3f, 0xc0, 0x14, 0xa1, 0x70, 0x54, 0x9c, 0x3e, 0x3b, - 0x46, 0x89, 0x1a, 0x8e, 0xec, 0xfa, 0xed, 0xcc, 0x52, 0x53, 0xc6, 0xe3, - 0x4f, 0x8b, 0xb2, 0xcf, 0xee, 0xdd, 0xf5, 0xa8, 0x5d, 0x9a, 0x53, 0x6e, - 0xe8, 0x5d, 0x13, 0x8f, 0x86, 0x29, 0x96, 0x6c, 0x29, 0xbd, 0x81, 0x28, - 0x4a, 0x68, 0xc9, 0xcc, 0xbe, 0xfa, 0x8d, 0x40, 0x3f, 0xd6, 0x8f, 0xef, - 0xd2, 0xe4, 0x9e, 0xd3, 0xb2, 0x8f, 0x3d, 0x28, 0x59, 0x95, 0x67, 0x58, - 0xf5, 0x8b, 0x59, 0x3c, 0xbe, 0xa1, 0x0b, 0xa5, 0x8f, 0xb8, 0xeb, 0x16, - 0x19, 0x2b, 0xac, 0xa0, 0x5a, 0x1f, 0x16, 0x83, 0xe1, 0xb8, 0x34, 0x2c, - 0xc3, 0xa5, 0x0b, 0x90, 0x14, 0x79, 0x10, 0x6b, 0x40, 0xb0, 0xc4, 0x58, - 0xea, 0x70, 0xae, 0xa0, 0x39, 0x66, 0xb9, 0x41, 0xc9, 0x7e, 0x48, 0x6c, - 0x90, 0x2c, 0x35, 0x43, 0xe3, 0x7a, 0x7b, 0x3a, 0xf4, 0x18, 0x01, 0xa5, - 0x56, 0x52, 0x80, 0xad, 0x60, 0xc8, 0x52, 0xe1, 0xeb, 0x35, 0x55, 0xa5, - 0x0b, 0x01, 0xcc, 0x97, 0xf8, 0x20, 0x44, 0xbf, 0x88, 0x78, 0x9b, 0xe6, - 0x15, 0xac, 0x07, 0x6e, 0xfd, 0xcf, 0x1a, 0xa0, 0x3d, 0x91, 0x2a, 0x3a, - 0xed, 0x91, 0x2a, 0x9c, 0x51, 0x17, 0x16, 0x42, 0x87, 0xb1, 0x19, 0x49, - 0x5e, 0x44, 0x62, 0x74, 0x69, 0xdf, 0x56, 0x25, 0x15, 0xce, 0xd1, 0x10, - 0x64, 0x98, 0x97, 0xc4, 0xd1, 0x3e, 0xff, 0xb1, 0x4f, 0xff, 0xfe, 0xd4, - 0xf0, 0x05, 0x96, 0x82, 0x27, 0xa3, 0x26, 0x2d, 0x0b, 0x2b, 0xcd, 0x3d, - 0x3c, 0xbe, 0x54, 0xa6, 0x47, 0x3b, 0xf2, 0x6d, 0x11, 0x14, 0x16, 0x68, - 0x0d, 0x91, 0x30, 0xb7, 0xdc, 0x66, 0xc1, 0x50, 0x40, 0x01, 0x00, 0xb9, - 0x44, 0x0d, 0x59, 0x2b, 0xb0, 0x0b, 0xcc, 0xe5, 0xc6, 0x91, 0xd2, 0x1d, - 0x75, 0xd5, 0x95, 0x5d, 0xed, 0xe3, 0xc4, 0xfb, 0x25, 0x7d, 0x7d, 0xc7, - 0x11, 0x03, 0xc4, 0x14, 0x2b, 0x86, 0x7a, 0x12, 0x71, 0xae, 0xc8, 0x5c, - 0x42, 0x0b, 0x28, 0x19, 0xc3, 0x6f, 0x3a, 0x72, 0x19, 0x8d, 0x48, 0xa2, - 0x33, 0x48, 0xc0, 0xa5, 0xce, 0xf3, 0x3c, 0xbb, 0xb7, 0xb3, 0xaf, 0x61, - 0xc9, 0x81, 0xcc, 0xe0, 0x1d, 0x8c, 0xd4, 0xf6, 0x72, 0xd1, 0xe2, 0x79, - 0xe5, 0x54, 0x85, 0x06, 0x90, 0x48, 0x98, 0x89, 0x19, 0xd6, 0xc9, 0x68, - 0x0d, 0x4f, 0x01, 0x92, 0xfc, 0x96, 0x47, 0x51, 0x75, 0xa5, 0x4d, 0xc4, - 0x96, 0xed, 0xd2, 0x2b, 0x34, 0x74, 0x1b, 0x18, 0x3a, 0x1c, 0x8b, 0xdc, - 0x28, 0x3d, 0x2e, 0xa9, 0xd5, 0xc0, 0x5d, 0xb0, 0xb8, 0xeb, 0x32, 0x72, - 0x25, 0x3a, 0x36, 0xd9, 0x93, 0x39, 0x86, 0xfd, 0x4b, 0x03, 0xc2, 0xeb, - 0x65, 0x32, 0xda, 0x70, 0x09, 0x88, 0x03, 0x3c, 0xf9, 0xfe, 0xfb, 0x00, - 0x9a, 0x84, 0xe5, 0xcd, 0xad, 0x5e, 0x85, 0x69, 0xd5, 0x2a, 0x46, 0x12, - 0x15, 0x65, 0x2d, 0xa7, 0xdc, 0xc2, 0xec, 0x35, 0x14, 0x95, 0x23, 0x31, - 0xa0, 0xc4, 0x0d, 0x5c, 0x08, 0xbc, 0x15, 0xb8, 0xd6, 0xe0, 0xf7, 0x20, - 0x0c, 0xac, 0xa5, 0x7e, 0x94, 0x0b, 0xf9, 0xe9, 0xf9, 0xd8, 0x5b, 0x89, - 0x3c, 0x41, 0x78, 0x5a, 0xb8, 0x54, 0x85, 0xa3, 0x18, 0xba, 0x95, 0xee, - 0xe7, 0x83, 0xb6, 0xca, 0x26, 0x4d, 0xec, 0x44, 0xc9, 0x62, 0xc0, 0x8c, - 0x70, 0x7e, 0xa5, 0x1a, 0x0f, 0x9b, 0xa6, 0xc6, 0x79, 0xa2, 0x9e, 0x9b, - 0xc2, 0x95, 0x96, 0x6f, 0x9c, 0x57, 0xb1, 0xf3, 0x20, 0xd2, 0x4a, 0xc0, - 0xc2, 0x39, 0x5c, 0x57, 0xce, 0x2e, 0xae, 0x1f, 0x1f, 0xcf, 0x10, 0xee, - 0x16, 0x3f, 0xde, 0x6b, 0x0a, 0x08, 0xf7, 0x28, 0x3f, 0x12, 0x98, 0xee, - 0x10, 0x72, 0xa5, 0x99, 0x49, 0x82, 0x79, 0xf3, 0xa7, 0x6a, 0x91, 0x3d, - 0xcd, 0x9b, 0x13, 0xd2, 0x6b, 0xab, 0x24, 0xd8, 0x2f, 0xf3, 0x25, 0x56, - 0x88, 0x37, 0x84, 0x41, 0xdc, 0x58, 0x32, 0xb6, 0x74, 0x32, 0x76, 0xf2, - 0x59, 0x74, 0x99, 0xdc, 0x62, 0xde, 0xdd, 0xda, 0x0c, 0x02, 0xb1, 0x79, - 0x59, 0xda, 0x3a, 0xa7, 0xa9, 0x57, 0x02, 0x24, 0xfa, 0x7d, 0x12, 0x4c, - 0xfb, 0x78, 0xac, 0x68, 0x54, 0x76, 0x68, 0xd8, 0xbc, 0xa4, 0x85, 0x22, - 0x5c, 0x30, 0xd3, 0x21, 0x8c, 0x86, 0xd4, 0x65, 0x14, 0x33, 0x05, 0xb1, - 0x09, 0xee, 0xab, 0xe3, 0xcb, 0xfa, 0xd1, 0x02, 0x74, 0x84, 0xaa, 0x8a, - 0xc8, 0x9f, 0xa0, 0xbf, 0xcf, 0xdf, 0x5d, 0x6e, 0x79, 0x73, 0xc0, 0x24, - 0xab, 0xd9, 0xac, 0xac, 0xf5, 0x96, 0x4c, 0x14, 0xc9, 0x51, 0x50, 0x50, - 0x06, 0x24, 0x9a, 0xb8, 0x03, 0xc1, 0x28, 0x0a, 0x4f, 0x76, 0x76, 0x49, - 0x54, 0xdb, 0xd9, 0x83, 0xd5, 0xe5, 0xc9, 0xce, 0x13, 0x67, 0xce, 0xb6, - 0xa7, 0x1a, 0x37, 0x1e, 0xd3, 0x34, 0xf0, 0x17, 0x50, 0xcc, 0x56, 0xb4, - 0xee, 0xe8, 0xc9, 0xc3, 0x03, 0xbe, 0xea, 0x55, 0xb1, 0x7a, 0x8a, 0x44, - 0xa7, 0xef, 0x86, 0xba, 0xe6, 0x68, 0xf9, 0x15, 0x87, 0xf9, 0x64, 0x39, - 0x97, 0xd8, 0x2f, 0x56, 0x7d, 0x91, 0xf1, 0x50, 0xbf, 0x1c, 0x42, 0x3a, - 0x78, 0x8c, 0x35, 0x9d, 0xb2, 0x78, 0x5f, 0x61, 0x64, 0x3d, 0x8f, 0x4c, - 0x22, 0x70, 0xbf, 0xa6, 0xdd, 0x59, 0x2a, 0x62, 0xad, 0xb9, 0x3f, 0x05, - 0x28, 0x9f, 0x52, 0x20, 0x05, 0xa4, 0x1e, 0x70, 0x37, 0x54, 0xbc, 0xe2, - 0xa4, 0x31, 0x7f, 0x4a, 0x32, 0x75, 0x10, 0x36, 0xf3, 0x20, 0xb2, 0x1c, - 0x8f, 0x4a, 0xd2, 0x7f, 0x99, 0x67, 0x93, 0xe5, 0x18, 0x77, 0x3d, 0x87, - 0xbd, 0x70, 0x21, 0xbf, 0x91, 0xa0, 0x3e, 0x1a, 0x88, 0x06, 0x37, 0xed, - 0x89, 0xb4, 0xa9, 0x66, 0x2b, 0x6c, 0x3a, 0x9e, 0x73, 0x69, 0xbb, 0xac, - 0xd9, 0xb0, 0xd1, 0xc8, 0x65, 0x0b, 0xd7, 0x59, 0xc4, 0xfc, 0x2a, 0x53, - 0xd3, 0x5f, 0x13, 0xa4, 0x17, 0x74, 0x09, 0x27, 0x9d, 0x99, 0xd5, 0x63, - 0x29, 0x46, 0x07, 0xda, 0xf9, 0x92, 0x83, 0xd5, 0x6a, 0xed, 0x55, 0x60, - 0x58, 0x67, 0x0c, 0x2a, 0x9b, 0x8f, 0xe9, 0x78, 0xbf, 0xd4, 0xa8, 0xcd, - 0xa6, 0xab, 0x1f, 0xa0, 0x23, 0x43, 0x67, 0xc2, 0x57, 0xac, 0x48, 0x0f, - 0x3a, 0xa5, 0xeb, 0x2a, 0x32, 0xf5, 0x4c, 0xe0, 0x87, 0x35, 0x69, 0xa6, - 0x99, 0xb8, 0x05, 0x64, 0x55, 0xbf, 0xe2, 0x1f, 0xcc, 0xb1, 0x0c, 0x5d, - 0x00, 0x2d, 0x68, 0x91, 0xb4, 0xd0, 0xe9, 0x82, 0x41, 0xbe, 0x9a, 0xb6, - 0xed, 0xf5, 0x18, 0x25, 0x3a, 0x6d, 0x30, 0xf1, 0x7f, 0xe7, 0xb4, 0xe1, - 0x76, 0xfd, 0x65, 0xc3, 0x7c, 0x40, 0x91, 0x1a, 0xc4, 0x59, 0xbe, 0x84, - 0xe2, 0xf6, 0x91, 0x6a, 0x39, 0xde, 0xd8, 0x34, 0xf5, 0x75, 0xcb, 0xe7, - 0x5b, 0x0b, 0xe6, 0x84, 0x00, 0x3a, 0x31, 0xf3, 0x58, 0x17, 0xda, 0xe9, - 0x2f, 0xb6, 0xb4, 0x1a, 0x49, 0x8d, 0xfb, 0x18, 0x99, 0x97, 0xbd, 0x2a, - 0x3c, 0xce, 0xba, 0x7a, 0x82, 0x08, 0x7c, 0x04, 0x63, 0x0d, 0x79, 0x0d, - 0xe0, 0x8f, 0x71, 0xfd, 0x26, 0x0f, 0xf0, 0xb9, 0x10, 0x9f, 0x7a, 0xfe, - 0x64, 0xd0, 0x6e, 0xfb, 0x11, 0x25, 0xdd, 0x87, 0x9c, 0x1a, 0x57, 0x16, - 0x27, 0x85, 0xc0, 0xc9, 0x2c, 0x72, 0x86, 0x96, 0x0d, 0x66, 0xd7, 0x6b, - 0xc1, 0xcd, 0x43, 0xe0, 0x39, 0x83, 0x80, 0x8b, 0x8c, 0x5c, 0x36, 0xa2, - 0x91, 0x2c, 0xfe, 0xc8, 0x4a, 0x72, 0x79, 0x23, 0x17, 0x4f, 0xb3, 0xe1, - 0x3d, 0xe6, 0x69, 0xe3, 0xb6, 0x06, 0x5a, 0x96, 0xa4, 0x59, 0x36, 0x16, - 0x4b, 0x28, 0x04, 0xb7, 0x9b, 0x41, 0x53, 0x64, 0xa4, 0x6a, 0xe4, 0x8d, - 0x50, 0x2a, 0xe4, 0xaf, 0xb3, 0x12, 0x80, 0xb0, 0xdf, 0xcb, 0x4a, 0x6d, - 0x48, 0x4f, 0x15, 0xb3, 0x6d, 0x21, 0x8c, 0x47, 0x23, 0xda, 0xde, 0x28, - 0x21, 0x88, 0x1a, 0x3c, 0x57, 0x78, 0x61, 0x25, 0x5b, 0x51, 0x70, 0x0d, - 0xe3, 0x85, 0xb8, 0x50, 0x06, 0xc4, 0x5a, 0x67, 0x85, 0x6b, 0x71, 0x77, - 0x91, 0x1c, 0x31, 0x08, 0x60, 0x54, 0x83, 0x38, 0x7e, 0x2d, 0x11, 0x9c, - 0x5a, 0x01, 0x83, 0x11, 0x8a, 0x9c, 0xff, 0x35, 0x1b, 0xa9, 0x94, 0xc4, - 0x37, 0x7d, 0x1b, 0x72, 0xed, 0x15, 0xa2, 0xc3, 0x49, 0x6d, 0x8f, 0x26, - 0x4b, 0x71, 0x12, 0xf2, 0x80, 0xe6, 0x49, 0xc9, 0x0a, 0x2c, 0x62, 0xc7, - 0x45, 0xcf, 0xa0, 0xd3, 0x24, 0xd8, 0x8e, 0x88, 0x69, 0x95, 0x98, 0xc2, - 0x06, 0x68, 0x9c, 0xab, 0xec, 0xa4, 0x72, 0x34, 0x16, 0x87, 0x5d, 0x61, - 0x6b, 0x64, 0x80, 0x5f, 0x4f, 0x19, 0x7e, 0x83, 0xdd, 0x98, 0x37, 0xa3, - 0xf6, 0xde, 0xe0, 0xc3, 0x01, 0x57, 0xac, 0xe4, 0x18, 0x6a, 0x71, 0x4f, - 0x2c, 0x35, 0xb5, 0x4f, 0x8a, 0x21, 0xfb, 0x56, 0xe6, 0xdb, 0x5c, 0x9e, - 0xb8, 0xcc, 0xc7, 0x8d, 0x46, 0x6e, 0x7d, 0xa6, 0x5b, 0x81, 0x00, 0x0b, - 0x6c, 0xd9, 0x00, 0x0f, 0x13, 0xf3, 0x78, 0xaf, 0xbf, 0x64, 0xce, 0x8f, - 0xb3, 0x15, 0x3a, 0x44, 0x5a, 0xcc, 0xf5, 0xdd, 0xc2, 0xf9, 0x17, 0x54, - 0xb5, 0xe5, 0x9d, 0x00, 0xf4, 0x56, 0x5b, 0x1d, 0x65, 0x87, 0x27, 0xbb, - 0x5a, 0x34, 0x82, 0x27, 0x24, 0x0c, 0x5a, 0x96, 0xee, 0x4a, 0x0a, 0x54, - 0x99, 0xdf, 0xca, 0xcb, 0xda, 0xae, 0x86, 0x55, 0x28, 0x6b, 0x08, 0x38, - 0x4a, 0xcb, 0xe8, 0x1a, 0xf5, 0xaa, 0x59, 0xc4, 0xc4, 0x1c, 0x37, 0x9f, - 0x6e, 0x41, 0xa9, 0x2e, 0x17, 0x9b, 0xbb, 0x5b, 0x82, 0xbb, 0xa6, 0xa9, - 0xfc, 0x16, 0xbe, 0xd1, 0xe6, 0x3d, 0xf4, 0xf5, 0xaf, 0x82, 0xda, 0xaa, - 0xcc, 0x3b, 0x00, 0x09, 0x8b, 0xf8, 0xcd, 0x2b, 0x39, 0x14, 0x78, 0xdc, - 0x34, 0x7a, 0x36, 0x42, 0xb6, 0x70, 0x46, 0xc9, 0x6a, 0x5b, 0xb0, 0x9f, - 0xa6, 0x10, 0xc8, 0xf5, 0xcd, 0xb4, 0x0c, 0x33, 0xf8, 0x38, 0xbf, 0x59, - 0x2a, 0x89, 0xd0, 0xea, 0x4d, 0x27, 0x7d, 0x90, 0xf1, 0x75, 0x9e, 0x35, - 0x11, 0xc2, 0xd8, 0xc9, 0xce, 0x6b, 0xb0, 0x65, 0xae, 0xd0, 0xd6, 0x4a, - 0x19, 0x1d, 0x76, 0x29, 0x76, 0xc2, 0x3a, 0x68, 0xe6, 0xb5, 0xac, 0x1b, - 0x86, 0x2a, 0x5b, 0xda, 0xa0, 0xf7, 0x83, 0xe8, 0x6f, 0xcb, 0x74, 0x7c, - 0x8b, 0xbd, 0x45, 0xf8, 0x13, 0x3c, 0x54, 0x89, 0x93, 0x5b, 0xe9, 0x7a, - 0x60, 0xc9, 0x5c, 0x2a, 0x62, 0xb1, 0xfe, 0x09, 0x31, 0xc5, 0xa8, 0xac, - 0xa5, 0x4a, 0x0d, 0x9f, 0x55, 0xa7, 0x57, 0x00, 0x25, 0x4a, 0x4e, 0xa0, - 0x5a, 0x60, 0x44, 0x1b, 0x99, 0x64, 0x1c, 0x21, 0xcb, 0x8e, 0x16, 0xa1, - 0x82, 0x75, 0xd8, 0xec, 0xdd, 0xd9, 0x8a, 0xb3, 0xd0, 0xbb, 0x15, 0xd2, - 0x8b, 0xba, 0xc4, 0xb3, 0xe8, 0x9e, 0xe8, 0xda, 0xfa, 0xd6, 0x1c, 0xf2, - 0x4d, 0xb4, 0xeb, 0x35, 0x5d, 0x0b, 0x69, 0x4b, 0x17, 0xbe, 0x75, 0x69, - 0x3c, 0xb8, 0x6b, 0x31, 0xd7, 0xbe, 0xf9, 0xde, 0x6b, 0x6d, 0x7f, 0xab, - 0x6b, 0xe6, 0x31, 0x1b, 0xf0, 0xb8, 0xd5, 0x7a, 0xf6, 0x9c, 0x44, 0xec, - 0xae, 0xbc, 0x12, 0xb6, 0x78, 0xcb, 0xa2, 0x99, 0xe0, 0xe7, 0x2a, 0xb0, - 0xf1, 0x84, 0x99, 0x6e, 0xd8, 0xda, 0x13, 0x5b, 0x6d, 0x19, 0xe1, 0x64, - 0xf2, 0xba, 0x36, 0xcb, 0x74, 0x39, 0xa8, 0x0c, 0x56, 0x43, 0xdc, 0xd6, - 0xa4, 0x2d, 0x59, 0x25, 0xf8, 0xa8, 0x12, 0x0f, 0xd7, 0x52, 0x0c, 0x3e, - 0xa9, 0x3e, 0xd1, 0x9e, 0xbe, 0xcc, 0xea, 0xc3, 0x24, 0xe1, 0x48, 0x23, - 0x89, 0x7f, 0x7a, 0x93, 0x8e, 0xf3, 0xac, 0xc8, 0xae, 0xe4, 0x56, 0xf7, - 0xb8, 0x99, 0x6a, 0x70, 0xe2, 0xf4, 0xe2, 0x98, 0x9d, 0xbb, 0x4d, 0x7e, - 0xa1, 0xe5, 0xf8, 0xd8, 0xf2, 0x8b, 0x80, 0x42, 0xba, 0xb4, 0x67, 0x44, - 0xeb, 0xcc, 0x45, 0xd8, 0x12, 0x5c, 0x8a, 0x21, 0x3c, 0x8e, 0x9c, 0x5b, - 0x87, 0xcf, 0xb9, 0x85, 0x4c, 0x3e, 0x7b, 0x5c, 0x93, 0xe6, 0xad, 0xd0, - 0x2a, 0x2e, 0x66, 0xbd, 0x9d, 0x68, 0x65, 0x1d, 0xc5, 0x44, 0x12, 0xe5, - 0xc7, 0x5e, 0x6b, 0x1f, 0x9d, 0x29, 0x30, 0xc0, 0x2f, 0x87, 0xd1, 0x38, - 0xac, 0x98, 0xc8, 0x81, 0x80, 0x27, 0xc7, 0x97, 0xaf, 0xa3, 0x49, 0x1e, - 0xd3, 0xf4, 0xf1, 0x6f, 0x9f, 0x74, 0x80, 0x9f, 0xe3, 0x46, 0x16, 0x70, - 0xb1, 0xe0, 0x4d, 0xea, 0xb3, 0xe7, 0xb1, 0xbf, 0xf3, 0x74, 0x50, 0x3e, - 0xb4, 0x46, 0x0a, 0x86, 0xd6, 0x4b, 0xad, 0xac, 0xe1, 0xb7, 0x4b, 0x13, - 0x3c, 0x73, 0xc4, 0xcc, 0x3e, 0xac, 0x1a, 0x20, 0x87, 0x6d, 0xa0, 0xc0, - 0xa8, 0x57, 0xdc, 0xc7, 0xf3, 0x9e, 0x4a, 0x3e, 0x36, 0xec, 0xb2, 0x35, - 0xea, 0x52, 0x02, 0x2d, 0xab, 0xa1, 0x94, 0x4d, 0x3d, 0xa4, 0x35, 0xb0, - 0xd2, 0xe2, 0x2a, 0xdb, 0xe2, 0x28, 0xed, 0xe3, 0x35, 0xe8, 0x89, 0x45, - 0x95, 0x30, 0xdb, 0xb5, 0x78, 0x5f, 0x5b, 0xa6, 0x86, 0xa1, 0x81, 0x18, - 0x36, 0x50, 0x81, 0x45, 0x58, 0x93, 0xf4, 0xcb, 0x76, 0xa3, 0xfe, 0x52, - 0xd3, 0x61, 0xdb, 0x93, 0x84, 0xac, 0x10, 0xb4, 0x61, 0xbb, 0xd5, 0x48, - 0x0c, 0x52, 0xaa, 0xb9, 0x1e, 0x07, 0x52, 0x3b, 0x57, 0xc2, 0xcf, 0xea, - 0x1c, 0xad, 0xbf, 0x8c, 0xa2, 0xfd, 0xae, 0x10, 0x79, 0x32, 0xe7, 0x9a, - 0x1a, 0x42, 0xda, 0xb8, 0xbd, 0x1d, 0x1f, 0xac, 0x32, 0x3c, 0x97, 0xcc, - 0xd2, 0x5f, 0xb6, 0x8f, 0x2e, 0xce, 0x13, 0xbe, 0x9c, 0x24, 0x04, 0x52, - 0x4b, 0x88, 0x0d, 0xfe, 0x1d, 0x88, 0xdb, 0x55, 0x7c, 0x05, 0xcf, 0x87, - 0xde, 0x6e, 0x23, 0x48, 0x7f, 0xb4, 0xe4, 0xef, 0x5a, 0x2b, 0x75, 0x2b, - 0x33, 0x94, 0x27, 0xd4, 0x29, 0x1b, 0xb8, 0x56, 0x0b, 0x0e, 0x94, 0x9b, - 0x31, 0x72, 0xb0, 0x99, 0xdc, 0x59, 0xfa, 0x63, 0xfd, 0xb8, 0x4e, 0x13, - 0x4b, 0xe1, 0x1d, 0xa1, 0x10, 0x51, 0x33, 0xbb, 0x4b, 0x1f, 0xb0, 0x33, - 0x49, 0xe3, 0xda, 0x7a, 0xd4, 0xe6, 0xa0, 0x46, 0x03, 0x2e, 0x81, 0x4b, - 0x85, 0x7e, 0x81, 0x32, 0x50, 0x6b, 0x83, 0x36, 0xe2, 0xd0, 0xd8, 0x19, - 0x36, 0xe3, 0x66, 0x49, 0x02, 0x69, 0xaf, 0xc5, 0x6a, 0x6e, 0x86, 0xdc, - 0x14, 0x85, 0x30, 0x62, 0xa4, 0xe0, 0x5b, 0x96, 0x96, 0xbc, 0xce, 0x99, - 0xde, 0x77, 0x40, 0x3b, 0xb4, 0x52, 0x46, 0x8f, 0x14, 0xe8, 0x12, 0xab, - 0x91, 0x56, 0x98, 0xc7, 0xa8, 0xdc, 0x02, 0x3e, 0x1e, 0x76, 0x67, 0x50, - 0xf8, 0x62, 0xf7, 0xbc, 0x86, 0x0d, 0x36, 0x88, 0x2f, 0x73, 0x19, 0x80, - 0xec, 0x9f, 0x54, 0xb3, 0x5b, 0x83, 0x89, 0x48, 0x65, 0x11, 0x62, 0x22, - 0xd2, 0xa7, 0x70, 0x26, 0x0f, 0x76, 0xd1, 0x32, 0x92, 0x6a, 0xa6, 0xc6, - 0x63, 0x74, 0xb0, 0x14, 0xdb, 0x84, 0xcf, 0xea, 0xe0, 0x94, 0x76, 0x18, - 0x4e, 0xd5, 0x58, 0x7b, 0x79, 0x78, 0x1e, 0xd8, 0xc2, 0x49, 0x85, 0x2b, - 0x9a, 0x29, 0x4d, 0x2e, 0xca, 0x0c, 0xc1, 0x3a, 0x73, 0xd7, 0xfa, 0xec, - 0xdf, 0xb8, 0x36, 0x7e, 0x06, 0xc1, 0xf2, 0xb8, 0x0f, 0x6b, 0x4b, 0xa3, - 0xf9, 0x7b, 0xe9, 0xa4, 0x35, 0x8b, 0x42, 0x17, 0xc8, 0x70, 0xb8, 0x75, - 0x89, 0x38, 0x6b, 0xcc, 0xd2, 0x24, 0x4f, 0x8e, 0x68, 0x30, 0x2c, 0xdc, - 0x5c, 0x13, 0xf9, 0x7c, 0xe9, 0x73, 0xba, 0x9a, 0x52, 0x59, 0x90, 0x09, - 0x0e, 0x37, 0x07, 0x6a, 0x37, 0x79, 0x63, 0x1d, 0xb7, 0x92, 0x84, 0xb8, - 0x1d, 0xe2, 0x37, 0xd6, 0x2c, 0xd2, 0xf6, 0x3c, 0x79, 0x14, 0x57, 0xe7, - 0xc0, 0x90, 0x9b, 0xa5, 0x80, 0x79, 0x69, 0xee, 0x9a, 0xc3, 0x6a, 0xcf, - 0x13, 0x64, 0x00, 0xf2, 0x80, 0x83, 0x11, 0x17, 0x2d, 0xb7, 0x13, 0x72, - 0xa2, 0x92, 0x99, 0xba, 0xb5, 0x46, 0x79, 0x76, 0x4b, 0x27, 0x84, 0xdf, - 0x83, 0x30, 0xca, 0x6b, 0x2f, 0x87, 0xdc, 0x4c, 0x59, 0x74, 0x0c, 0x14, - 0xee, 0xb5, 0x69, 0x98, 0x33, 0xbc, 0x6b, 0x4d, 0xa4, 0xf1, 0x87, 0x45, - 0x80, 0xa6, 0x10, 0x06, 0x68, 0x17, 0x28, 0xae, 0x1e, 0xae, 0x80, 0x04, - 0xb7, 0xbc, 0x18, 0x5c, 0x1a, 0x1a, 0x69, 0x03, 0x9a, 0xf7, 0x37, 0xa7, - 0x21, 0x47, 0x16, 0x21, 0x0d, 0xb5, 0xec, 0x79, 0x85, 0x98, 0x44, 0x12, - 0x78, 0x49, 0x54, 0x25, 0x77, 0x3c, 0xbb, 0xfd, 0xea, 0xca, 0x3f, 0xa0, - 0x4e, 0xfb, 0x3e, 0x64, 0x5d, 0x5c, 0x83, 0x57, 0x6a, 0x08, 0x15, 0xa3, - 0xe3, 0xc4, 0xa3, 0xc8, 0xc7, 0x22, 0x5e, 0xf4, 0x50, 0x06, 0x92, 0x75, - 0xdd, 0xe6, 0xed, 0xee, 0x53, 0x6a, 0x54, 0x5d, 0x81, 0xa3, 0x82, 0xf7, - 0x07, 0x19, 0xaa, 0x69, 0x50, 0x43, 0xe6, 0x8f, 0x61, 0x90, 0x74, 0x9b, - 0xd1, 0x12, 0xc8, 0x06, 0x49, 0xe1, 0x4d, 0xb3, 0x12, 0x17, 0xe3, 0x72, - 0xd8, 0x18, 0x1b, 0x25, 0xe4, 0x19, 0x18, 0xdc, 0x20, 0x3a, 0x66, 0x3b, - 0x6b, 0x8b, 0xf2, 0x90, 0xba, 0x5a, 0x87, 0x52, 0x32, 0x3c, 0x55, 0xec, - 0x04, 0x89, 0xbe, 0x56, 0x6d, 0x8c, 0xeb, 0x84, 0x21, 0x5b, 0xcf, 0xa5, - 0x48, 0x48, 0xe9, 0xb6, 0x36, 0x45, 0xaa, 0x28, 0x25, 0x91, 0x5d, 0xe3, - 0x1d, 0xed, 0x03, 0x07, 0x95, 0xf5, 0xda, 0xdb, 0xfb, 0x7b, 0x91, 0xb8, - 0x2c, 0xa1, 0x67, 0x08, 0xc0, 0x4b, 0xdb, 0x64, 0xa3, 0xe0, 0xb1, 0xf0, - 0x95, 0xfd, 0xcf, 0x76, 0x2c, 0x22, 0x8b, 0x33, 0xd8, 0xc3, 0x67, 0x90, - 0xd0, 0xdd, 0xbc, 0x67, 0x90, 0xe8, 0x9e, 0x95, 0xee, 0xc9, 0x3a, 0x34, - 0xeb, 0x8b, 0xc1, 0xd3, 0x8a, 0x79, 0x77, 0x5e, 0x4e, 0x67, 0x0e, 0x1a, - 0xc8, 0x74, 0x82, 0xb7, 0x97, 0xa7, 0x6f, 0xa2, 0x86, 0x2e, 0x20, 0x5a, - 0x68, 0xdb, 0x77, 0xff, 0x8a, 0x52, 0x40, 0x5f, 0x9c, 0x9c, 0x0c, 0xa1, - 0x12, 0xa8, 0xa3, 0xba, 0x11, 0x70, 0x51, 0x0a, 0xf9, 0xb0, 0x58, 0x95, - 0xa7, 0xa4, 0xd2, 0x93, 0x0c, 0x49, 0xbf, 0x97, 0xd9, 0x38, 0x9b, 0x72, - 0x32, 0x21, 0xbf, 0x93, 0x68, 0xa9, 0x78, 0x5c, 0xef, 0x0c, 0x5d, 0x36, - 0x05, 0x57, 0x22, 0x4d, 0xbc, 0x11, 0x30, 0xb3, 0xd0, 0x90, 0x63, 0xc7, - 0x52, 0x14, 0xf1, 0x8a, 0xef, 0x0a, 0x2e, 0x50, 0x39, 0xd1, 0x9b, 0x26, - 0x05, 0xde, 0x37, 0x0b, 0x9a, 0x6a, 0xe3, 0xb8, 0x4d, 0x11, 0xf5, 0xd7, - 0x48, 0xe5, 0xd4, 0x9a, 0x55, 0x35, 0x25, 0x7f, 0x3e, 0xc9, 0x72, 0xb8, - 0xed, 0x02, 0x94, 0x18, 0x40, 0x9b, 0x2d, 0x11, 0x14, 0x03, 0xae, 0xb9, - 0x6a, 0x1e, 0xa5, 0xfb, 0x9b, 0x4c, 0x43, 0x7d, 0x65, 0xa5, 0x99, 0x31, - 0x49, 0x1c, 0x04, 0xdc, 0x73, 0x02, 0x30, 0x22, 0x38, 0x85, 0x8e, 0x93, - 0x04, 0xbb, 0xd1, 0xe6, 0x5e, 0x73, 0x55, 0xe2, 0x24, 0xd3, 0xaa, 0x27, - 0xf6, 0x4d, 0xda, 0x9c, 0xa3, 0xf4, 0x7a, 0x0d, 0xfe, 0x56, 0x9b, 0xd2, - 0xc1, 0xa3, 0x71, 0xfa, 0x46, 0xbb, 0xba, 0xd1, 0x1a, 0x1d, 0x5c, 0xd1, - 0x37, 0x88, 0xda, 0x7e, 0x41, 0x86, 0x97, 0xaf, 0x58, 0x2a, 0xda, 0x86, - 0xa8, 0x1b, 0xb8, 0xf8, 0x4c, 0xd7, 0x78, 0xd7, 0x70, 0x68, 0x3d, 0xa6, - 0x52, 0x54, 0x53, 0xb3, 0x78, 0x4a, 0xff, 0xa3, 0xd2, 0x71, 0x46, 0x23, - 0x55, 0x29, 0xb2, 0x35, 0x84, 0xf3, 0x3b, 0xa4, 0x7d, 0x98, 0x9c, 0x99, - 0xe9, 0x43, 0x21, 0x1a, 0x55, 0x51, 0x4e, 0x32, 0x06, 0x17, 0xb1, 0xa0, - 0xa4, 0xdc, 0x2e, 0xf3, 0xbf, 0xff, 0xa3, 0xe9, 0xa7, 0xfe, 0xf1, 0x27, - 0xd8, 0x87, 0x10, 0x5e, 0xeb, 0x7c, 0x28, 0x46, 0x46, 0x85, 0xc7, 0x16, - 0xe4, 0x1d, 0xe3, 0x5c, 0x16, 0x9d, 0xa1, 0x55, 0x06, 0xaf, 0xab, 0x30, - 0x16, 0x99, 0x66, 0x89, 0x07, 0x3a, 0x3a, 0xbb, 0x08, 0x80, 0xf7, 0x12, - 0xd4, 0xf1, 0x0d, 0x8a, 0x07, 0x48, 0xc4, 0xf4, 0x3a, 0xc4, 0x25, 0x8b, - 0x47, 0x57, 0x30, 0x1f, 0x0b, 0x2b, 0xe7, 0x40, 0x60, 0xb1, 0x9f, 0x63, - 0x06, 0x7c, 0xd1, 0xc0, 0x19, 0x98, 0xce, 0x9b, 0x68, 0x20, 0xb2, 0xd1, - 0x1a, 0xd3, 0xfb, 0x77, 0x3a, 0x65, 0xbd, 0xf2, 0x3e, 0xfb, 0xc7, 0x80, - 0xbd, 0x6a, 0xe0, 0xc4, 0xfd, 0x4c, 0xc0, 0x43, 0xdf, 0x7f, 0xb2, 0xcb, - 0x7a, 0x77, 0xa7, 0x09, 0x99, 0x8a, 0x45, 0xb0, 0x4d, 0x77, 0x51, 0xfa, - 0x6b, 0xc0, 0x47, 0xaa, 0xdd, 0x71, 0x2f, 0x3d, 0xbe, 0x14, 0xfe, 0x31, - 0xe0, 0x7f, 0x7f, 0xdc, 0xed, 0x3f, 0xfb, 0xc9, 0xf5, 0xfa, 0xc9, 0xee, - 0xfb, 0x4f, 0xf6, 0x3a, 0x6d, 0xa8, 0xaa, 0x6c, 0x99, 0x58, 0x1a, 0x12, - 0xa6, 0xe9, 0x73, 0x5a, 0x3b, 0x54, 0x1c, 0x5d, 0x6a, 0xf9, 0xf1, 0x68, - 0x6b, 0x00, 0x7f, 0x6c, 0x71, 0x22, 0xb2, 0xda, 0xd2, 0x9e, 0x69, 0xaf, - 0x10, 0xb6, 0x62, 0x09, 0xf7, 0xa5, 0x00, 0x03, 0xed, 0x56, 0x2b, 0xe3, - 0xc1, 0xb2, 0x8d, 0x60, 0x1b, 0xb5, 0x19, 0x36, 0xcc, 0x93, 0x1c, 0xf4, - 0x33, 0x59, 0xd1, 0xc5, 0x27, 0x60, 0x17, 0x2e, 0xab, 0xd7, 0x44, 0x49, - 0xab, 0x29, 0x2a, 0xf9, 0x43, 0x9b, 0xb1, 0x15, 0x13, 0x8b, 0x90, 0x6a, - 0xb2, 0xd5, 0xa6, 0xd0, 0x78, 0x1d, 0xc2, 0xd3, 0xfc, 0x28, 0x71, 0xf5, - 0x45, 0x95, 0xd8, 0xfd, 0xf9, 0xa9, 0x41, 0x4e, 0xb4, 0x9e, 0x9e, 0xa0, - 0xa9, 0x58, 0x67, 0x14, 0xd4, 0x7a, 0x56, 0x90, 0x59, 0x87, 0xe4, 0x84, - 0xaf, 0xee, 0x81, 0x2b, 0xdd, 0x00, 0x4a, 0x42, 0x2a, 0x96, 0x73, 0xf7, - 0x84, 0x60, 0x5e, 0xe1, 0xcb, 0x2e, 0x5c, 0x43, 0xb2, 0xed, 0x88, 0xa6, - 0x51, 0xcf, 0x68, 0x59, 0x36, 0x93, 0xec, 0x07, 0x5b, 0xad, 0xa1, 0xa6, - 0x06, 0x2a, 0xe5, 0x63, 0x76, 0xa3, 0x20, 0xc8, 0x29, 0x2a, 0x04, 0xb6, - 0x93, 0x01, 0xc4, 0x05, 0xf1, 0x22, 0xf1, 0x86, 0x81, 0x46, 0x30, 0xa7, - 0x16, 0xdb, 0xeb, 0x39, 0x1c, 0x98, 0x64, 0x5a, 0x24, 0x83, 0x7f, 0x2b, - 0xf9, 0x55, 0xb6, 0xa8, 0x1f, 0x37, 0x3c, 0x80, 0x15, 0xf6, 0x2f, 0x61, - 0x1f, 0xd5, 0x2a, 0x7c, 0x52, 0x59, 0xc0, 0x95, 0xb9, 0x73, 0x93, 0x2a, - 0x84, 0x3c, 0x1a, 0x59, 0x12, 0xb1, 0xd9, 0xa5, 0x24, 0x6d, 0xb4, 0x01, - 0x4c, 0x82, 0x14, 0x52, 0xe7, 0x92, 0x80, 0x77, 0x3e, 0x93, 0xe4, 0x2e, - 0x96, 0x6f, 0x9b, 0x60, 0x78, 0xee, 0x26, 0xac, 0xe8, 0xdb, 0x52, 0x4d, - 0x5c, 0x99, 0xdd, 0x18, 0xdc, 0x49, 0x6a, 0x35, 0x54, 0xe7, 0xdb, 0xa2, - 0x81, 0xb9, 0xd2, 0xa2, 0x4b, 0x27, 0x1f, 0x48, 0x46, 0x25, 0xb4, 0xa4, - 0x4e, 0x9f, 0x63, 0x65, 0x3a, 0x02, 0x49, 0x0b, 0xe5, 0x30, 0x68, 0xee, - 0x51, 0xf0, 0xae, 0x17, 0x55, 0xd7, 0x30, 0x5b, 0x8d, 0xa2, 0x97, 0x8b, - 0x9b, 0x9c, 0x64, 0x9a, 0x47, 0x40, 0x08, 0xe8, 0x29, 0x79, 0xc6, 0x31, - 0xda, 0x85, 0x4f, 0xda, 0xff, 0x0d, 0xb3, 0xe1, 0x39, 0xb0, 0xfe, 0xc9, - 0xce, 0x6e, 0xa3, 0x0a, 0x89, 0x2f, 0x3c, 0xae, 0xba, 0x23, 0x2f, 0x31, - 0x2d, 0xce, 0xc5, 0xeb, 0xc3, 0x28, 0xda, 0x7b, 0xbe, 0xfb, 0x7c, 0x7b, - 0x77, 0x67, 0xf0, 0x64, 0xb0, 0x17, 0x39, 0xd3, 0x38, 0xc9, 0xea, 0x5c, - 0xe6, 0x07, 0xa1, 0x35, 0xed, 0xd1, 0x28, 0xac, 0xf0, 0x51, 0x63, 0x1c, - 0x37, 0xe3, 0x3e, 0x81, 0xf1, 0xc5, 0x5f, 0xe1, 0x31, 0x07, 0xce, 0xb8, - 0xc8, 0x0c, 0xb3, 0x7d, 0x37, 0x9c, 0xd5, 0xf3, 0x3e, 0xc6, 0xa1, 0x42, - 0xdf, 0x52, 0xd0, 0x94, 0xa3, 0xe5, 0x28, 0x25, 0xa1, 0xa5, 0xe4, 0x22, - 0x78, 0xac, 0x41, 0x90, 0x28, 0x6b, 0x58, 0x3d, 0x3d, 0x8e, 0x05, 0x74, - 0x55, 0x12, 0xdb, 0x03, 0x14, 0x4d, 0x56, 0x09, 0x0c, 0x17, 0x88, 0x54, - 0x4d, 0x35, 0x17, 0x17, 0xc0, 0x2b, 0x74, 0xe3, 0x4b, 0xd9, 0x99, 0xaf, - 0x5d, 0x36, 0x70, 0xdc, 0x1a, 0xe7, 0x09, 0xac, 0x4e, 0xaf, 0xfd, 0x72, - 0x51, 0x29, 0x0e, 0x39, 0xf2, 0x70, 0x24, 0xfa, 0x81, 0x10, 0xab, 0x88, - 0x82, 0x98, 0x77, 0x1b, 0x74, 0x5a, 0xea, 0x6a, 0x25, 0xf8, 0x1d, 0x57, - 0x34, 0x0f, 0xf6, 0xee, 0x8a, 0x8e, 0x27, 0x46, 0x65, 0x14, 0xc7, 0x7e, - 0x2c, 0xc0, 0xf0, 0x11, 0x9c, 0x39, 0xa1, 0x85, 0xbd, 0xff, 0x2f, 0xd1, - 0xc2, 0xde, 0xff, 0x4f, 0x0b, 0xff, 0x26, 0x5a, 0x78, 0x51, 0xa3, 0x05, - 0xd6, 0xec, 0x88, 0x6f, 0xa9, 0x82, 0xd7, 0x44, 0xe2, 0x11, 0xaa, 0x08, - 0xc8, 0xc2, 0xd7, 0x8f, 0x63, 0xfd, 0x5e, 0x60, 0x42, 0xf4, 0x65, 0x85, - 0x0e, 0x42, 0x45, 0x3b, 0x8d, 0x83, 0x6c, 0x22, 0x69, 0x72, 0xc1, 0x3e, - 0xf6, 0xc3, 0x9f, 0xbb, 0xb7, 0x58, 0x8c, 0xe6, 0xcf, 0x96, 0x62, 0x1c, - 0x49, 0xae, 0xb0, 0x0b, 0xf0, 0xed, 0xf6, 0xf0, 0x25, 0xc2, 0xaf, 0x39, - 0xe3, 0xbe, 0xc1, 0xdf, 0x61, 0x4f, 0x31, 0x9d, 0x1d, 0xed, 0x48, 0xcd, - 0x5f, 0x1b, 0x92, 0x96, 0x68, 0xc8, 0xa3, 0x2e, 0x5d, 0x05, 0x8c, 0xb6, - 0xe1, 0x53, 0x79, 0x5b, 0xca, 0x38, 0x5f, 0xa5, 0x0f, 0xa2, 0xcf, 0xfe, - 0x9c, 0xe4, 0x59, 0x64, 0xfe, 0x26, 0x0d, 0xa5, 0x03, 0x7c, 0x94, 0xa5, - 0xc4, 0xfb, 0x0f, 0xb9, 0xd7, 0x86, 0x88, 0xfa, 0x27, 0xa0, 0xfa, 0x49, - 0xf4, 0x24, 0xc7, 0x84, 0xd9, 0x68, 0x98, 0x06, 0x26, 0x93, 0xd4, 0x84, - 0x3f, 0xbf, 0x70, 0x56, 0x66, 0x0f, 0xae, 0xec, 0xb2, 0xa5, 0xa2, 0x2c, - 0xaf, 0xcc, 0x66, 0xd9, 0x52, 0x34, 0x37, 0xbd, 0x92, 0x6c, 0x0a, 0x19, - 0x8e, 0xcb, 0x0a, 0x6e, 0x08, 0x1d, 0xfd, 0x28, 0x3a, 0x4a, 0xe6, 0x2b, - 0xb3, 0xcd, 0x78, 0x8d, 0x5e, 0x2a, 0x33, 0x41, 0xc6, 0x29, 0xbd, 0xcb, - 0xc3, 0x4c, 0x54, 0x6e, 0x88, 0xcd, 0x21, 0x55, 0xc7, 0x5c, 0xb6, 0xb8, - 0x3e, 0x5e, 0xb9, 0x65, 0xc8, 0x44, 0x98, 0x0b, 0xd7, 0x62, 0x13, 0x00, - 0x00, 0x26, 0xbe, 0xa2, 0x3f, 0x6b, 0xf1, 0xd1, 0x65, 0xd8, 0x82, 0xde, - 0x2b, 0x1e, 0x9c, 0x62, 0x39, 0xfa, 0x2b, 0x58, 0x14, 0x13, 0x26, 0xd7, - 0xad, 0xe1, 0x33, 0x18, 0xa2, 0xde, 0x71, 0xad, 0x83, 0xe5, 0x48, 0x50, - 0x0e, 0xca, 0x66, 0x73, 0xf4, 0x21, 0x04, 0x6b, 0x97, 0x01, 0xaf, 0x74, - 0x16, 0xd8, 0xe9, 0x1a, 0x93, 0x0a, 0xcc, 0x4d, 0x8d, 0x7d, 0xb7, 0xf3, - 0xc4, 0x55, 0x92, 0x0a, 0x35, 0x2c, 0x84, 0x9b, 0xe5, 0x56, 0x53, 0x1c, - 0xd5, 0xce, 0xac, 0xc6, 0x8f, 0xaf, 0x6d, 0x8b, 0xa8, 0xb5, 0xc7, 0xca, - 0x4e, 0xd1, 0xfb, 0x13, 0xff, 0x68, 0xaf, 0x96, 0x5b, 0x49, 0xd0, 0x30, - 0x1b, 0x3c, 0x3f, 0x8e, 0xa3, 0x81, 0xd7, 0xd7, 0x75, 0xf0, 0x8a, 0xbf, - 0x95, 0x1e, 0x1e, 0x6f, 0x1b, 0xda, 0xcc, 0x2f, 0xe8, 0xe0, 0xdd, 0xdc, - 0x22, 0xc1, 0x8c, 0xcc, 0x17, 0x2e, 0x60, 0x93, 0xa4, 0xbc, 0x7c, 0x2e, - 0x06, 0x74, 0x91, 0x48, 0x63, 0xab, 0x1f, 0xc7, 0x79, 0x38, 0xc0, 0xfb, - 0xaa, 0x07, 0x39, 0x30, 0x80, 0xce, 0x14, 0xfc, 0x95, 0xfe, 0xe5, 0xbd, - 0x85, 0x76, 0x6a, 0x71, 0xd1, 0x26, 0x2d, 0x2e, 0xb2, 0x52, 0x22, 0xb4, - 0xd9, 0x6c, 0xc9, 0xd2, 0x6d, 0xce, 0x77, 0x43, 0x0b, 0xc6, 0x91, 0x6d, - 0x84, 0x25, 0xe9, 0x73, 0xb3, 0xdc, 0xe0, 0x72, 0x21, 0x4e, 0x50, 0x49, - 0x58, 0xd0, 0x32, 0x0f, 0xc8, 0x60, 0x30, 0xca, 0x95, 0x9e, 0xeb, 0x86, - 0x29, 0x98, 0x4c, 0x70, 0xd9, 0xb9, 0xf0, 0xee, 0xbb, 0x2c, 0x9d, 0xa0, - 0x04, 0x6e, 0x9e, 0xb7, 0xe0, 0xbf, 0x7f, 0x5c, 0xbc, 0x65, 0x2f, 0xc0, - 0x79, 0x89, 0x8b, 0xd0, 0x3d, 0xd6, 0xb4, 0x0a, 0xbb, 0xf8, 0xdf, 0x58, - 0x42, 0xda, 0x88, 0x88, 0xe7, 0x71, 0x69, 0x47, 0xcc, 0x6f, 0x03, 0x46, - 0x29, 0x29, 0xd7, 0xec, 0xad, 0x1b, 0x27, 0x2d, 0xf8, 0x7e, 0x50, 0x0b, - 0xdb, 0x83, 0xb5, 0x6a, 0x11, 0x92, 0x7b, 0x8d, 0xfb, 0x44, 0x02, 0xbe, - 0x3f, 0x7c, 0xab, 0xb4, 0x5c, 0x2a, 0x7a, 0xa7, 0x04, 0x9c, 0x51, 0x2a, - 0xb2, 0x39, 0xf9, 0x60, 0xd0, 0x12, 0x6f, 0x66, 0x94, 0x2c, 0x21, 0x6c, - 0xf7, 0xe1, 0xdb, 0x39, 0x0c, 0x20, 0x24, 0xca, 0x88, 0x13, 0xe0, 0x17, - 0x4e, 0xe5, 0x61, 0xd5, 0x27, 0x85, 0x8c, 0xcd, 0x6e, 0xad, 0x13, 0xb0, - 0x8d, 0x5e, 0x20, 0x94, 0x87, 0x88, 0x26, 0x95, 0x2c, 0xf5, 0x9a, 0x97, - 0xda, 0x0c, 0xb4, 0x5a, 0x59, 0x77, 0x36, 0x5b, 0xd6, 0x69, 0x71, 0x6e, - 0xb5, 0x7c, 0x45, 0x93, 0x0a, 0x6b, 0xb7, 0x9b, 0xb9, 0xdd, 0xd0, 0x02, - 0x05, 0xc7, 0x5b, 0x12, 0x56, 0x40, 0x5b, 0xac, 0x95, 0xb6, 0xcb, 0x5e, - 0xdb, 0x2e, 0x52, 0x3d, 0x67, 0x8c, 0x87, 0x3e, 0xf1, 0xba, 0x45, 0x2d, - 0x61, 0xe5, 0x49, 0xdb, 0x94, 0x81, 0xa8, 0xf9, 0xe8, 0x84, 0xb9, 0xf3, - 0xb5, 0xf1, 0xcc, 0x51, 0x38, 0x53, 0x9b, 0xd9, 0x3a, 0xeb, 0x93, 0x4c, - 0x52, 0xe7, 0xf8, 0x4e, 0xdc, 0x9c, 0x68, 0x13, 0xca, 0x22, 0xb3, 0x19, - 0x5e, 0x96, 0xa0, 0x2f, 0x51, 0x35, 0x1b, 0x13, 0x86, 0x0e, 0x2f, 0x29, - 0x17, 0xf2, 0x9c, 0x1e, 0x07, 0x8f, 0x68, 0x51, 0x1f, 0xa4, 0xee, 0x0a, - 0xe6, 0xd4, 0xb4, 0xa1, 0x16, 0xd2, 0x11, 0x0f, 0x2c, 0xad, 0x86, 0xfa, - 0xc8, 0x1a, 0x4d, 0x60, 0xcc, 0x7d, 0x84, 0xac, 0xc3, 0x55, 0x12, 0xcb, - 0x6f, 0x7d, 0x04, 0x52, 0xd3, 0xf7, 0x9f, 0x5c, 0x24, 0xe9, 0xbf, 0x65, - 0x95, 0xb4, 0xaf, 0xd6, 0x4c, 0x86, 0x70, 0x99, 0x1a, 0x33, 0x5a, 0x17, - 0xc2, 0xb4, 0x66, 0xe7, 0xd7, 0x05, 0x31, 0xd5, 0xa7, 0xd5, 0x16, 0x6a, - 0xda, 0x3e, 0x31, 0x85, 0xfe, 0xf2, 0x03, 0x51, 0xee, 0xeb, 0xe6, 0x87, - 0x8e, 0xeb, 0xde, 0x40, 0xf7, 0xb0, 0xa6, 0x36, 0x55, 0x48, 0xe1, 0x51, - 0x2d, 0xc8, 0x99, 0xc8, 0x3f, 0x86, 0x39, 0xc9, 0x9c, 0xd9, 0x28, 0xff, - 0x6b, 0xee, 0x22, 0xdc, 0x41, 0x95, 0x3d, 0x44, 0x17, 0x95, 0xa9, 0xb4, - 0xf8, 0xc3, 0x1a, 0x9b, 0xb7, 0x3b, 0xd8, 0x01, 0xb7, 0x7d, 0x58, 0xc1, - 0x04, 0xba, 0xcf, 0x77, 0xd7, 0x4f, 0x9f, 0x37, 0x0a, 0x59, 0xb8, 0xc2, - 0xcf, 0x1e, 0x03, 0x56, 0x4a, 0xa7, 0xf0, 0xfb, 0x36, 0x32, 0x43, 0xae, - 0xf2, 0x49, 0x7f, 0x1a, 0x4e, 0xb4, 0x1e, 0xd4, 0x2f, 0x2d, 0x03, 0x4c, - 0x3f, 0xce, 0xcb, 0xc3, 0xcb, 0xbb, 0x3b, 0x9f, 0xed, 0xb4, 0xe6, 0x2e, - 0x43, 0x84, 0x08, 0x0a, 0xd2, 0x39, 0xc4, 0x4d, 0x11, 0x4d, 0xb5, 0x2a, - 0x6e, 0x62, 0x83, 0x53, 0xe7, 0x47, 0x6b, 0x60, 0xc6, 0x66, 0xff, 0x61, - 0x5b, 0xd7, 0x80, 0xe5, 0xc2, 0x54, 0x03, 0xaa, 0xd5, 0x25, 0xee, 0xb2, - 0x15, 0x0f, 0xcf, 0xde, 0xbe, 0x3d, 0x3e, 0x24, 0x55, 0xec, 0x26, 0x87, - 0xe0, 0xe8, 0xdc, 0x98, 0x6d, 0x66, 0x51, 0x5f, 0x6a, 0x43, 0x06, 0xc0, - 0x8b, 0x13, 0x48, 0xf0, 0xce, 0x19, 0x50, 0xe3, 0x2f, 0x2d, 0xc4, 0xb9, - 0x3b, 0xd8, 0x0d, 0xb6, 0x6a, 0x61, 0x23, 0x2d, 0x39, 0xd1, 0x70, 0xda, - 0x1a, 0x3f, 0x65, 0x7d, 0xca, 0x9c, 0xcd, 0xe0, 0x53, 0x9d, 0x65, 0x23, - 0x01, 0x0f, 0x97, 0x41, 0x8b, 0xbe, 0x6c, 0x2d, 0x99, 0x72, 0x86, 0x64, - 0x17, 0x59, 0x19, 0xcd, 0x5e, 0xc3, 0x40, 0x22, 0xb7, 0x2c, 0x0a, 0x3d, - 0xd6, 0xb2, 0x30, 0x61, 0x01, 0x9d, 0x59, 0x02, 0x09, 0x4c, 0xf4, 0xce, - 0xb4, 0xd4, 0xa2, 0x99, 0x00, 0xd1, 0x86, 0x7d, 0xd7, 0xc5, 0xad, 0x2b, - 0xe8, 0x3f, 0xf5, 0xd2, 0xb8, 0xef, 0xa8, 0xd7, 0x78, 0x41, 0x1d, 0x21, - 0x57, 0xa7, 0x10, 0x80, 0x5d, 0x77, 0x50, 0x2a, 0xdb, 0x6e, 0x5b, 0xe7, - 0x52, 0x9d, 0x5a, 0xb2, 0x08, 0x9c, 0x13, 0xcb, 0x25, 0x81, 0xc8, 0xcb, - 0x2a, 0x53, 0x6a, 0x56, 0x91, 0x86, 0xb1, 0x58, 0x64, 0xac, 0x32, 0x8a, - 0x96, 0xc2, 0xd3, 0x4a, 0xf5, 0x12, 0xd8, 0x14, 0xcf, 0x85, 0x8c, 0x74, - 0xad, 0x1c, 0x05, 0x65, 0x95, 0x43, 0xb8, 0x1c, 0x3d, 0x02, 0x40, 0xca, - 0x76, 0x3f, 0x71, 0x24, 0x3e, 0x8a, 0x3d, 0xea, 0x42, 0xe3, 0x2c, 0xc6, - 0x70, 0x4d, 0x75, 0x83, 0x7f, 0x3b, 0xf6, 0xe8, 0xf9, 0xb6, 0xd6, 0x56, - 0x47, 0x3e, 0xf1, 0xba, 0xfc, 0x9c, 0xd7, 0x5a, 0x0a, 0x19, 0xfe, 0xe1, - 0xa2, 0x76, 0x3a, 0xb4, 0xf8, 0x69, 0x96, 0x6f, 0x43, 0xc0, 0xe3, 0x12, - 0x7c, 0x79, 0x36, 0x35, 0xe8, 0xec, 0x16, 0xd0, 0x43, 0x04, 0x1c, 0xd9, - 0x55, 0x41, 0x4d, 0xab, 0x2d, 0x44, 0x9d, 0xb3, 0x33, 0x9f, 0x46, 0x29, - 0xa2, 0xa3, 0x16, 0x5a, 0xb5, 0xca, 0xe7, 0x27, 0xf3, 0x06, 0x70, 0x1f, - 0x3f, 0x01, 0x78, 0x3d, 0xe5, 0xeb, 0x38, 0x6e, 0x82, 0xa7, 0xad, 0x4c, - 0xd1, 0x95, 0x80, 0x35, 0x42, 0x61, 0x60, 0x3b, 0xa5, 0x96, 0x06, 0xaa, - 0x37, 0xa7, 0x38, 0x75, 0x8b, 0x80, 0x93, 0x5a, 0x1e, 0x92, 0x40, 0x8a, - 0xe4, 0xa5, 0x61, 0x40, 0x54, 0x0a, 0xd6, 0xc6, 0xc5, 0x6d, 0xb1, 0x16, - 0x9a, 0xbb, 0x1a, 0xed, 0x4d, 0xa3, 0x0b, 0x90, 0xfb, 0xad, 0x55, 0x81, - 0xdc, 0x2a, 0xc3, 0x51, 0x32, 0x25, 0x56, 0x9b, 0x73, 0x5b, 0xd4, 0x80, - 0x23, 0x6d, 0x28, 0xac, 0x0e, 0xc0, 0xbf, 0x5d, 0xf3, 0x4b, 0x07, 0x49, - 0xd4, 0x61, 0x68, 0xff, 0x4e, 0x98, 0xf6, 0x25, 0xda, 0x88, 0x7b, 0x95, - 0x2b, 0x71, 0xd0, 0x50, 0xdd, 0x58, 0x5b, 0x5c, 0x14, 0xc6, 0x5e, 0xd5, - 0xb2, 0xcf, 0x5b, 0xb6, 0xf9, 0x6e, 0x9e, 0x3e, 0xe0, 0x2a, 0x68, 0xe2, - 0x05, 0xbb, 0x79, 0x3f, 0x32, 0xaa, 0xdd, 0x17, 0x7b, 0x83, 0xdd, 0xe7, - 0x9f, 0x0d, 0x76, 0x77, 0x06, 0xbb, 0x95, 0xd1, 0x41, 0x41, 0xe2, 0x90, - 0xbf, 0xb0, 0x9d, 0x96, 0x4b, 0xb4, 0x2d, 0x76, 0x25, 0xec, 0x60, 0xb6, - 0x1a, 0x04, 0x91, 0xeb, 0x8d, 0x2e, 0x34, 0xba, 0xbd, 0xc5, 0xcc, 0xe2, - 0xfc, 0xd0, 0x4a, 0x6a, 0xd0, 0x0e, 0x9c, 0x6a, 0x16, 0x6c, 0xaa, 0x84, - 0x37, 0x7a, 0xe3, 0x4f, 0x4b, 0x25, 0xa4, 0x20, 0x4d, 0xaa, 0x52, 0x78, - 0xda, 0x45, 0xe4, 0xb9, 0xfe, 0xff, 0x85, 0xe3, 0xae, 0x68, 0x34, 0x1c, - 0xf8, 0xe6, 0x8e, 0x21, 0xf4, 0x18, 0x17, 0x1d, 0x0b, 0xbe, 0x7f, 0x7e, - 0x76, 0x71, 0xa9, 0x09, 0xda, 0xc2, 0x0e, 0xe2, 0xe2, 0x6e, 0xe0, 0xa2, - 0xe5, 0x10, 0x9d, 0xab, 0x97, 0x4b, 0xe9, 0xa0, 0x3a, 0xac, 0xb9, 0xe3, - 0xf3, 0x0b, 0x8f, 0xa2, 0x10, 0xdc, 0xa1, 0x68, 0xd3, 0x65, 0x0c, 0xb3, - 0x58, 0x8b, 0xd6, 0xfa, 0xa4, 0xb2, 0x71, 0x8e, 0x08, 0x5e, 0x83, 0x9d, - 0x97, 0x56, 0x68, 0xea, 0xc1, 0x2d, 0xf8, 0xb5, 0x3f, 0xfd, 0xc9, 0xb3, - 0xa8, 0x21, 0xa7, 0xb4, 0x69, 0x45, 0x44, 0xd8, 0x38, 0x9f, 0x79, 0xf7, - 0xba, 0x00, 0xc0, 0x44, 0x9d, 0xfd, 0x1f, 0x91, 0xf8, 0xf6, 0x53, 0xff, - 0x47, 0xfa, 0xf3, 0xa7, 0x8e, 0xbb, 0x06, 0xa0, 0x50, 0x89, 0x67, 0xd1, - 0x4d, 0x5e, 0x36, 0x08, 0x35, 0x63, 0x51, 0x7f, 0x54, 0xae, 0x02, 0xde, - 0x2e, 0x8e, 0x87, 0xc4, 0x41, 0x14, 0x8c, 0x04, 0x0f, 0xa8, 0x13, 0x1b, - 0x76, 0x8a, 0x14, 0x29, 0x23, 0x4a, 0x71, 0x6b, 0x89, 0x74, 0xc0, 0xd8, - 0x20, 0x10, 0xf0, 0x62, 0xcf, 0x70, 0xc7, 0xd8, 0x49, 0x7a, 0x2f, 0x6c, - 0x27, 0x36, 0x88, 0x15, 0xb9, 0x7f, 0x18, 0x5a, 0x53, 0x5d, 0xb8, 0xf2, - 0xc1, 0x86, 0x4b, 0x09, 0xe7, 0x7c, 0x2c, 0x52, 0xf1, 0xb9, 0xa4, 0x94, - 0x1a, 0x92, 0x10, 0x3c, 0x96, 0xb8, 0x80, 0xd9, 0x74, 0xce, 0x7e, 0x65, - 0xb3, 0x3e, 0xe5, 0x69, 0x71, 0xcb, 0x33, 0x54, 0xd0, 0x82, 0x48, 0x90, - 0x35, 0x36, 0x02, 0x45, 0x1f, 0x23, 0xb3, 0xbc, 0x5a, 0x8e, 0xd7, 0x37, - 0x3b, 0x67, 0x70, 0x0b, 0xfc, 0xcd, 0xc8, 0x4c, 0xcb, 0x0e, 0xa9, 0x7f, - 0x52, 0xd0, 0xf9, 0x3c, 0x5c, 0x69, 0x36, 0xaf, 0x14, 0xcb, 0x10, 0x94, - 0x2b, 0x83, 0x72, 0x6b, 0xe4, 0x53, 0x85, 0xc0, 0x84, 0x2e, 0x15, 0x08, - 0x41, 0x0b, 0xf1, 0xc4, 0x90, 0x0a, 0x35, 0xaf, 0x1d, 0xb4, 0x18, 0x42, - 0x65, 0xb6, 0x60, 0x50, 0x58, 0x06, 0x92, 0x0e, 0xa2, 0x0d, 0xfe, 0xb0, - 0x48, 0xe2, 0x9c, 0xb8, 0x17, 0xbb, 0x8a, 0x83, 0xc9, 0xfd, 0x2f, 0x6a, - 0x16, 0x40, 0xa9, 0x0c, 0xec, 0x8b, 0x91, 0xb7, 0xdd, 0x6f, 0xdb, 0x43, - 0xb9, 0xe4, 0x38, 0xcc, 0x1c, 0x2c, 0x3a, 0xce, 0x47, 0x69, 0x99, 0xc7, - 0x1a, 0x65, 0xaf, 0x08, 0x21, 0x81, 0x70, 0xa1, 0x65, 0x3c, 0x86, 0xeb, - 0x50, 0x42, 0x06, 0xd1, 0xff, 0x42, 0xa7, 0xfa, 0xb6, 0xd8, 0x2b, 0x90, - 0x9a, 0xfa, 0xe5, 0xf1, 0xeb, 0xb3, 0x8b, 0xe3, 0x6a, 0x42, 0xa7, 0x80, - 0x07, 0x44, 0x6d, 0x35, 0xc9, 0x36, 0x51, 0x3a, 0x59, 0x8d, 0x25, 0x56, - 0xaa, 0x4d, 0x80, 0x08, 0xce, 0xbf, 0x3b, 0x0a, 0x4e, 0x9e, 0xc1, 0xac, - 0x58, 0xa3, 0xbd, 0x56, 0xaf, 0x2e, 0xf8, 0xe7, 0x16, 0x8a, 0x61, 0x0b, - 0xba, 0x83, 0x8d, 0x4f, 0xe0, 0x73, 0x50, 0xc8, 0xcb, 0x0c, 0x33, 0x08, - 0xe4, 0x2c, 0x0a, 0x76, 0x4a, 0xb8, 0x46, 0x5b, 0x60, 0x73, 0x89, 0xd9, - 0x4b, 0xed, 0x4b, 0x35, 0x71, 0xc4, 0x12, 0x98, 0xc0, 0xd1, 0x0a, 0x83, - 0xa8, 0xd9, 0x91, 0xc2, 0xac, 0x48, 0x2f, 0x8d, 0x92, 0x34, 0x82, 0xc3, - 0xc6, 0x9e, 0x5d, 0xf1, 0x60, 0x9b, 0xc2, 0xa0, 0x58, 0x3b, 0x51, 0x08, - 0x6e, 0x23, 0x55, 0xa5, 0xad, 0x06, 0x40, 0xcb, 0xed, 0xeb, 0xd6, 0x57, - 0x3b, 0xdf, 0x2c, 0xb6, 0x2a, 0xd5, 0xb6, 0x6d, 0xf1, 0xac, 0xa8, 0xe3, - 0x9f, 0xba, 0xde, 0x12, 0xdf, 0x82, 0xb8, 0xe3, 0xc0, 0xd0, 0x2d, 0x05, - 0x6f, 0x6b, 0xe0, 0x3c, 0xfe, 0xed, 0x55, 0xfc, 0xdc, 0xac, 0x01, 0x17, - 0xd1, 0x5a, 0xce, 0x5b, 0x05, 0x04, 0x03, 0x9a, 0xb4, 0x93, 0x6c, 0xd0, - 0x89, 0x1a, 0x18, 0x61, 0xed, 0x28, 0xe0, 0x71, 0x1b, 0xd8, 0x93, 0x4f, - 0x2a, 0x75, 0xf5, 0x2b, 0x47, 0x0a, 0xdd, 0xfe, 0x83, 0x79, 0xc6, 0x91, - 0xf8, 0x1e, 0x15, 0xab, 0x79, 0x09, 0xa1, 0x49, 0x92, 0x0a, 0xc7, 0x59, - 0x9e, 0x37, 0x8d, 0x8e, 0x28, 0x76, 0xe5, 0x36, 0x0d, 0x19, 0x15, 0x17, - 0xaf, 0x0f, 0x5f, 0x3c, 0x7b, 0x01, 0xd1, 0x0f, 0x65, 0xd5, 0x34, 0x1f, - 0x4d, 0xa3, 0x0d, 0x11, 0xc6, 0xe9, 0x87, 0xdc, 0x60, 0x07, 0xda, 0x92, - 0x9a, 0x01, 0x47, 0xc9, 0x54, 0xf0, 0x29, 0x86, 0x41, 0x13, 0x83, 0x56, - 0xd3, 0x69, 0xdb, 0xed, 0xb9, 0xae, 0x3a, 0xb0, 0xdd, 0x1a, 0x18, 0x7d, - 0x2a, 0xb1, 0x6f, 0x5a, 0x5d, 0xd4, 0xd4, 0x25, 0xd2, 0xd0, 0xe7, 0xd0, - 0x66, 0x74, 0x13, 0x7b, 0x8e, 0xea, 0x5c, 0xd5, 0xd6, 0xa2, 0xad, 0xb9, - 0xbf, 0x55, 0xcf, 0x73, 0xad, 0xf2, 0x04, 0x0e, 0x40, 0xa5, 0xda, 0xf8, - 0x00, 0x1e, 0x05, 0xd6, 0x03, 0xda, 0x0c, 0x25, 0x6a, 0xc4, 0x32, 0x67, - 0x0c, 0x87, 0x33, 0x78, 0xf2, 0x6a, 0xe9, 0xaf, 0x59, 0xbb, 0xf9, 0xe6, - 0x3a, 0x5f, 0x48, 0xc2, 0x63, 0x1b, 0x40, 0x6d, 0x18, 0x07, 0x23, 0x8f, - 0x1a, 0xb1, 0xa3, 0xe6, 0x06, 0xac, 0x16, 0x78, 0xf7, 0xe4, 0xc8, 0xd5, - 0x39, 0xf7, 0xd1, 0x3c, 0xa3, 0x55, 0x7b, 0x73, 0xee, 0x31, 0x10, 0x9b, - 0x67, 0x8a, 0xae, 0x29, 0x2f, 0x35, 0x8f, 0x2c, 0x51, 0x1e, 0xdf, 0xb5, - 0x37, 0xa7, 0xad, 0x88, 0x32, 0x29, 0x6d, 0x58, 0xc3, 0x08, 0x54, 0xb5, - 0x4a, 0x73, 0xbc, 0x31, 0x9c, 0xe8, 0x6d, 0xdd, 0x34, 0x6b, 0x16, 0xde, - 0x90, 0x10, 0x2e, 0x82, 0xf8, 0x07, 0xd7, 0x62, 0x06, 0xd3, 0xa0, 0x61, - 0x35, 0xaa, 0x7b, 0xad, 0x08, 0xeb, 0x9f, 0xa3, 0x9d, 0x51, 0x2a, 0xe0, - 0x55, 0x4d, 0x52, 0xae, 0x5b, 0x49, 0x44, 0x49, 0x43, 0xf3, 0x78, 0x33, - 0x9c, 0xc2, 0x3c, 0xca, 0xc6, 0x65, 0x30, 0x03, 0x7e, 0xa0, 0xbd, 0x39, - 0x15, 0x0d, 0x9a, 0x33, 0x63, 0x3f, 0x0b, 0xd2, 0x98, 0x1e, 0x9f, 0x99, - 0x3c, 0xd8, 0xd8, 0x64, 0xfa, 0x50, 0x58, 0x51, 0x63, 0x87, 0xd7, 0xcf, - 0xac, 0x6d, 0x87, 0x31, 0x82, 0xfa, 0x06, 0xfb, 0x14, 0x2b, 0x3c, 0xde, - 0x6f, 0x6f, 0xce, 0xed, 0x30, 0x9e, 0x7c, 0x74, 0x83, 0xb5, 0x97, 0xc6, - 0x2a, 0x4c, 0xe7, 0x0a, 0x8d, 0xf9, 0x5e, 0x10, 0x02, 0x38, 0xef, 0xbf, - 0x7c, 0xff, 0xf8, 0x82, 0x4c, 0xe7, 0x06, 0xa5, 0xc5, 0xc9, 0xed, 0xfe, - 0xe0, 0x6a, 0x5c, 0x5e, 0x5c, 0x05, 0xd9, 0x8a, 0xc4, 0xbc, 0xb0, 0x86, - 0xec, 0x7d, 0x7f, 0x1e, 0x7b, 0x69, 0x91, 0xa5, 0x92, 0x8b, 0xaf, 0x68, - 0x41, 0x51, 0x65, 0x88, 0x51, 0x1b, 0x46, 0x4f, 0x10, 0x4b, 0xdc, 0x98, - 0xe2, 0xec, 0x96, 0x1d, 0x2b, 0xee, 0x76, 0x7b, 0xbf, 0x5e, 0x87, 0x01, - 0x1d, 0xcb, 0xe3, 0x9e, 0x8e, 0x65, 0x56, 0x4e, 0x39, 0x77, 0x19, 0xe7, - 0x1f, 0xde, 0xed, 0x6a, 0x97, 0xee, 0x4c, 0xd6, 0xc7, 0xb7, 0xb8, 0x9f, - 0x58, 0xe7, 0xfc, 0xab, 0x75, 0x1c, 0x02, 0x24, 0xc7, 0xa3, 0x22, 0x9b, - 0x2e, 0x4b, 0x89, 0xd6, 0x93, 0xc6, 0xae, 0x4c, 0x40, 0x5c, 0xb3, 0x14, - 0x88, 0x4f, 0xb5, 0xbb, 0x7d, 0x7d, 0x52, 0x75, 0x2e, 0x88, 0xea, 0x06, - 0x18, 0x86, 0xed, 0x58, 0xbf, 0x38, 0xfa, 0xb4, 0x1f, 0xa2, 0x00, 0x7e, - 0x7b, 0xe6, 0x95, 0xb7, 0x2c, 0xd0, 0x7a, 0x86, 0xa7, 0xbd, 0xd6, 0x0e, - 0xc4, 0x24, 0x61, 0xcc, 0x3d, 0x25, 0x05, 0x8e, 0x4e, 0xd4, 0xfa, 0xf0, - 0xca, 0xf7, 0x1e, 0x23, 0xa4, 0xb5, 0x6b, 0x9c, 0xcf, 0x3e, 0x70, 0xc8, - 0xe9, 0x01, 0x3f, 0x2b, 0x86, 0x06, 0x0b, 0x66, 0xd5, 0x38, 0x99, 0x7a, - 0x8c, 0xd7, 0xac, 0xfc, 0xba, 0x11, 0x54, 0xa8, 0xf0, 0xb1, 0x91, 0xf0, - 0x83, 0x6d, 0x83, 0x09, 0x80, 0xfc, 0xd8, 0x09, 0xbf, 0x0a, 0x38, 0x65, - 0x7b, 0x73, 0x3a, 0x5c, 0xff, 0x9e, 0x2e, 0x4f, 0xcf, 0xcc, 0x66, 0x13, - 0x35, 0x43, 0xb3, 0x06, 0xda, 0xa4, 0x0d, 0x3b, 0xe0, 0xbf, 0x88, 0x41, - 0xb0, 0xda, 0x31, 0x9d, 0x57, 0x62, 0x2b, 0xa9, 0xc7, 0x6c, 0x06, 0x0c, - 0x98, 0xf6, 0x18, 0x72, 0x49, 0x21, 0x0b, 0x91, 0xfe, 0xdd, 0xb6, 0x0b, - 0x5a, 0x80, 0xa0, 0x0d, 0x5b, 0xb9, 0xd4, 0xfb, 0x10, 0xd5, 0xae, 0xc5, - 0x0c, 0x66, 0x25, 0xc0, 0x62, 0xa0, 0xda, 0x51, 0xd7, 0x48, 0x5e, 0x14, - 0x46, 0x29, 0x59, 0x90, 0x85, 0xe9, 0x63, 0x62, 0x3c, 0x72, 0xa2, 0xb0, - 0x3c, 0xde, 0x28, 0x55, 0xc3, 0x59, 0x1b, 0x52, 0xb0, 0xb4, 0x5a, 0x05, - 0x6d, 0x50, 0x2f, 0x53, 0xdb, 0x4f, 0xae, 0x27, 0x7d, 0x25, 0x8e, 0x2a, - 0x2b, 0xea, 0xe7, 0xdb, 0x58, 0x08, 0x52, 0x7f, 0x5f, 0xe2, 0xc7, 0xe7, - 0x6b, 0x6b, 0x2f, 0x0e, 0x7d, 0x01, 0xc6, 0xe8, 0x42, 0x42, 0x7f, 0x98, - 0xa7, 0x32, 0x06, 0x8e, 0x2a, 0xd0, 0x9b, 0x6c, 0x6b, 0x91, 0x5a, 0xbd, - 0x82, 0x8e, 0x3f, 0x5e, 0xb6, 0x95, 0x66, 0xd8, 0xb2, 0xda, 0x82, 0x68, - 0x7a, 0x77, 0xb0, 0xdb, 0x33, 0xdd, 0x4a, 0xa5, 0x38, 0x93, 0x90, 0xf9, - 0x93, 0x58, 0x53, 0x7a, 0x22, 0xd4, 0x4f, 0xac, 0x5b, 0xc7, 0x2e, 0x24, - 0xe4, 0x55, 0xc5, 0xc6, 0xb0, 0xbc, 0x26, 0x57, 0x09, 0x74, 0x42, 0x39, - 0x23, 0xd9, 0x34, 0xa8, 0x68, 0xa7, 0xff, 0xf4, 0xc5, 0x8b, 0xca, 0xbd, - 0x1e, 0x2a, 0xc1, 0xcf, 0x76, 0x76, 0x04, 0xde, 0xa7, 0xfe, 0x1a, 0x7d, - 0xd1, 0x7f, 0x81, 0x17, 0xab, 0xaf, 0x09, 0x08, 0xcc, 0xfa, 0xf7, 0xfa, - 0xfc, 0x4d, 0x4b, 0x77, 0xb0, 0xe0, 0xac, 0x7d, 0xeb, 0x05, 0x77, 0xd7, - 0xf2, 0x16, 0x1e, 0x96, 0x75, 0xcc, 0xae, 0xae, 0xb8, 0x74, 0x35, 0x3f, - 0x29, 0x18, 0xe0, 0x59, 0x7e, 0x1f, 0xe7, 0x93, 0xe6, 0x74, 0x77, 0x7a, - 0xfd, 0xdd, 0x75, 0xd3, 0x75, 0x75, 0x26, 0xb1, 0x9d, 0xac, 0x09, 0x6d, - 0xfe, 0x71, 0x6b, 0xf3, 0xeb, 0xad, 0xb6, 0xd9, 0x7f, 0xba, 0xb3, 0xd3, - 0x7b, 0xce, 0x3f, 0x5f, 0xbc, 0x58, 0x1b, 0x63, 0xe2, 0xfb, 0x78, 0x62, - 0x53, 0xab, 0x8c, 0x96, 0xda, 0x69, 0x69, 0x7d, 0x97, 0x5a, 0xdd, 0x7d, - 0xf1, 0xa2, 0xc7, 0xbd, 0x3c, 0xfb, 0xa8, 0xd6, 0xcb, 0xfb, 0xcc, 0x9b, - 0xce, 0xf9, 0x75, 0x4f, 0x8e, 0x45, 0x6d, 0x06, 0xf4, 0x27, 0xa2, 0x98, - 0x18, 0xf5, 0x28, 0x32, 0xef, 0x82, 0x96, 0xa1, 0x54, 0x1f, 0x7c, 0x80, - 0xdb, 0x88, 0x40, 0xbf, 0x05, 0xf2, 0xf0, 0xa0, 0x29, 0x8a, 0xfa, 0x11, - 0x7b, 0xff, 0x82, 0xf9, 0xe3, 0x3d, 0xa2, 0xf6, 0x99, 0xb8, 0xc2, 0xae, - 0x19, 0x71, 0xc9, 0xb2, 0xf4, 0x8a, 0x68, 0x93, 0xc8, 0x65, 0x0b, 0xb6, - 0x80, 0xbb, 0x78, 0x9a, 0x1a, 0x92, 0x43, 0xd4, 0x85, 0x01, 0x4b, 0x50, - 0x39, 0xe8, 0xf7, 0x6c, 0xd1, 0x45, 0xbd, 0x9c, 0xe9, 0xc4, 0x69, 0x22, - 0xe6, 0x95, 0x92, 0x27, 0xfb, 0xf2, 0x8c, 0x1c, 0x34, 0xa8, 0x73, 0x0f, - 0x03, 0xc1, 0x23, 0x64, 0xef, 0x50, 0xad, 0xd7, 0xc8, 0x01, 0x23, 0x79, - 0x44, 0x5f, 0x81, 0xc2, 0x85, 0xb9, 0xca, 0x4f, 0xb3, 0x5b, 0x04, 0x08, - 0x78, 0xe6, 0x30, 0x98, 0x07, 0xde, 0xc0, 0x49, 0x62, 0x30, 0xcb, 0x35, - 0x1c, 0x18, 0xf7, 0xbe, 0xd8, 0x63, 0x96, 0xa2, 0x88, 0xfa, 0x43, 0xf6, - 0x03, 0x2c, 0x67, 0x9a, 0xbb, 0x25, 0xa9, 0x13, 0xac, 0x9f, 0xde, 0xc7, - 0x79, 0x62, 0x59, 0xa7, 0xa4, 0x37, 0x1b, 0x07, 0x70, 0x40, 0xab, 0x9a, - 0x39, 0xa9, 0xc9, 0xe3, 0x1e, 0x0b, 0xc1, 0x10, 0xad, 0x25, 0x58, 0x69, - 0x82, 0x78, 0x50, 0x4d, 0xb2, 0x65, 0xdb, 0x3f, 0xec, 0x74, 0x15, 0x77, - 0x98, 0xa1, 0xad, 0x9b, 0x85, 0x4e, 0x70, 0xe0, 0x36, 0x6a, 0x2e, 0x30, - 0x7e, 0x0a, 0xc9, 0xb0, 0x40, 0x69, 0x72, 0x25, 0x5c, 0xdd, 0x2c, 0xc0, - 0x8e, 0x78, 0x8b, 0xc0, 0x98, 0x64, 0xf1, 0x0d, 0x02, 0x4b, 0x0b, 0x46, - 0x5b, 0x74, 0x91, 0x40, 0xd4, 0x01, 0xf0, 0xa5, 0xb2, 0x63, 0xb4, 0x57, - 0x8e, 0x09, 0xd2, 0xa6, 0x45, 0x9b, 0x41, 0xd8, 0x22, 0x68, 0x2b, 0xd0, - 0xf9, 0x0d, 0x51, 0x35, 0x93, 0x18, 0xbc, 0xad, 0x81, 0x0c, 0x00, 0x46, - 0x5b, 0xd9, 0x09, 0x00, 0xf2, 0x84, 0x5b, 0x9a, 0x3c, 0x94, 0x80, 0xc4, - 0xc6, 0x93, 0x76, 0x39, 0x0f, 0x4f, 0xfe, 0xf7, 0xf1, 0xe0, 0xd7, 0xb0, - 0x26, 0xd7, 0x23, 0xcf, 0xf3, 0xf8, 0xde, 0xa3, 0x43, 0xa8, 0xb7, 0xd8, - 0x05, 0xbe, 0xc5, 0xd3, 0xa9, 0xaf, 0x73, 0x0f, 0xbf, 0x1f, 0x09, 0xfb, - 0x99, 0xa1, 0xc5, 0xbb, 0x1a, 0xf6, 0x6b, 0xd1, 0xc5, 0x39, 0xc3, 0x6f, - 0x82, 0x0a, 0xce, 0xa1, 0x61, 0xd9, 0x81, 0xbe, 0xcc, 0xe0, 0x7e, 0xb1, - 0x8a, 0x52, 0x4b, 0xea, 0x04, 0xa5, 0xda, 0xea, 0xf6, 0x29, 0x1a, 0x62, - 0x03, 0x8c, 0x3d, 0x8c, 0x8b, 0xb9, 0xf0, 0x29, 0x0d, 0x3c, 0xf3, 0x35, - 0xc8, 0x17, 0x08, 0x44, 0x15, 0x17, 0x76, 0x58, 0xda, 0xd6, 0xec, 0x06, - 0x81, 0x71, 0x1c, 0xc4, 0x8f, 0xac, 0x9b, 0x36, 0x73, 0x14, 0xaf, 0x6d, - 0x19, 0xcf, 0x16, 0x2d, 0xe9, 0x2e, 0x92, 0x99, 0x6b, 0x08, 0x49, 0xac, - 0x1c, 0xf9, 0x80, 0x54, 0x74, 0xd6, 0x6c, 0x2e, 0xc8, 0xc1, 0x11, 0xca, - 0xa5, 0x17, 0xe1, 0x88, 0x70, 0xfd, 0x54, 0x73, 0x47, 0x58, 0x16, 0x03, - 0x66, 0x70, 0xd3, 0x9d, 0xc8, 0x67, 0x03, 0x2b, 0x9f, 0x02, 0x33, 0x10, - 0x51, 0x6d, 0x3c, 0x08, 0x91, 0xee, 0x13, 0x8d, 0x70, 0x92, 0x48, 0x11, - 0x84, 0x55, 0x72, 0x68, 0x94, 0x56, 0x6c, 0x8d, 0xd7, 0xec, 0xa0, 0x07, - 0xe5, 0x94, 0xae, 0xb1, 0x7e, 0xfe, 0x16, 0x96, 0x54, 0x18, 0xb3, 0xdd, - 0x11, 0x7f, 0x82, 0x75, 0x6f, 0xb9, 0x18, 0x34, 0xb1, 0x8c, 0x83, 0x6a, - 0x42, 0xfa, 0x3e, 0x75, 0xbf, 0x13, 0xba, 0x0a, 0xc1, 0x28, 0x34, 0x04, - 0xd9, 0xd5, 0x6e, 0x49, 0x8b, 0xd6, 0xda, 0x1f, 0x30, 0x1c, 0xb3, 0x05, - 0xd4, 0xcd, 0x57, 0xa6, 0x2b, 0x36, 0x7e, 0xc9, 0x62, 0xde, 0xe7, 0x72, - 0x6c, 0x82, 0x6b, 0xd6, 0xf3, 0x80, 0xd1, 0xd1, 0xd3, 0x87, 0x87, 0x86, - 0x62, 0x12, 0x40, 0xe8, 0x4a, 0xf1, 0x31, 0x21, 0xf6, 0x67, 0x0f, 0x0f, - 0xd5, 0x2f, 0xd7, 0xc0, 0xaa, 0x88, 0x23, 0x89, 0xf7, 0x7b, 0x94, 0x49, - 0x72, 0x95, 0xac, 0x56, 0xdc, 0xb2, 0x8e, 0x72, 0x39, 0xdf, 0xc7, 0x88, - 0xba, 0x6d, 0x7a, 0x1a, 0x21, 0x71, 0xb8, 0x2a, 0x39, 0x96, 0xe5, 0xc3, - 0x89, 0xb7, 0x37, 0xc4, 0x0a, 0x04, 0x0c, 0x55, 0x83, 0x62, 0xb5, 0x41, - 0x2b, 0x59, 0xd4, 0xb2, 0x4e, 0xdc, 0x8b, 0x2c, 0x7b, 0x0a, 0xd4, 0xd1, - 0x32, 0x9d, 0xf2, 0x6b, 0xc0, 0xe0, 0xa4, 0x16, 0x76, 0x69, 0xf9, 0xd3, - 0xf9, 0xb2, 0x4c, 0x0a, 0x57, 0x2f, 0x3b, 0xa8, 0x35, 0xd7, 0xb6, 0xec, - 0x53, 0xe0, 0x05, 0x49, 0x38, 0x48, 0xbd, 0xa0, 0x97, 0x8e, 0x4b, 0x21, - 0x17, 0x14, 0x69, 0x46, 0x49, 0xb6, 0x8f, 0x57, 0x5b, 0x92, 0x89, 0x22, - 0x17, 0x18, 0xaa, 0x47, 0x33, 0x79, 0xa0, 0xd5, 0x96, 0x08, 0xd1, 0x08, - 0x1e, 0x5e, 0x92, 0x2e, 0xf8, 0xb6, 0xb9, 0xce, 0x72, 0xda, 0xd4, 0xd9, - 0x20, 0xc8, 0xdc, 0x6b, 0x44, 0x19, 0x4a, 0x57, 0x0e, 0xeb, 0x8f, 0xcb, - 0x88, 0x38, 0x88, 0xdc, 0x32, 0x2b, 0x95, 0x31, 0x6a, 0x2c, 0x2b, 0x73, - 0x1d, 0xc4, 0x2f, 0xd9, 0xb8, 0x1f, 0x8b, 0xca, 0xdf, 0x1b, 0x3c, 0x69, - 0x2b, 0x9b, 0x5a, 0xc1, 0x24, 0x89, 0x02, 0x61, 0xdf, 0x59, 0x36, 0x1f, - 0x29, 0x9e, 0xda, 0x58, 0xdc, 0x31, 0x07, 0x17, 0x84, 0xd5, 0x53, 0x6b, - 0xe7, 0x5e, 0x16, 0xf1, 0x11, 0x08, 0x43, 0xc3, 0x79, 0x2e, 0xa6, 0x49, - 0xb2, 0x90, 0xb1, 0x39, 0x64, 0x60, 0x2b, 0x9e, 0x2b, 0x27, 0x15, 0x61, - 0xf8, 0x4a, 0xa4, 0x7a, 0xdf, 0xae, 0xe3, 0x00, 0x11, 0xec, 0xf8, 0x30, - 0x69, 0x5b, 0x65, 0xbb, 0x76, 0x4e, 0xb3, 0x29, 0xe2, 0x8a, 0x25, 0xac, - 0xad, 0x29, 0x75, 0x65, 0x5b, 0x8a, 0xe1, 0xb8, 0x6d, 0x75, 0x44, 0xa5, - 0x9b, 0x51, 0xab, 0x7c, 0xdb, 0x2c, 0x1b, 0x21, 0x40, 0xf7, 0xb8, 0x9a, - 0x12, 0x81, 0xcd, 0x47, 0x05, 0x5c, 0x99, 0x11, 0x7c, 0xb6, 0x8a, 0x68, - 0x35, 0x70, 0xbc, 0x47, 0x0a, 0xa2, 0x60, 0x09, 0x1b, 0xb1, 0xcb, 0x48, - 0x28, 0xa8, 0xa1, 0x65, 0x9b, 0xf4, 0xe8, 0x22, 0x88, 0x1c, 0x35, 0xf2, - 0xd8, 0x07, 0x9e, 0x44, 0x9a, 0x35, 0x16, 0xfe, 0x5d, 0x14, 0xa3, 0x15, - 0x90, 0x8a, 0x47, 0xa9, 0xe6, 0x83, 0xd8, 0x97, 0x97, 0x7a, 0x78, 0x25, - 0xb3, 0x51, 0xaf, 0x0c, 0x96, 0xe8, 0x43, 0xa7, 0x4c, 0xa4, 0x8c, 0x2b, - 0xa0, 0x0b, 0xbd, 0x31, 0x1b, 0x0a, 0x9c, 0xf2, 0x27, 0xe3, 0x23, 0xc8, - 0x57, 0x8d, 0x59, 0x42, 0xe1, 0x42, 0x94, 0x9b, 0x9c, 0x80, 0xae, 0x43, - 0xdb, 0xe2, 0x8f, 0x01, 0x38, 0xa6, 0xce, 0x4a, 0xf4, 0xdf, 0x48, 0x9f, - 0x04, 0xc2, 0xa0, 0xf0, 0xac, 0x49, 0x0b, 0x42, 0xe8, 0xdb, 0x8c, 0x23, - 0x47, 0xf4, 0xca, 0xbd, 0xf2, 0xed, 0xe8, 0x9b, 0x4d, 0x1c, 0x41, 0xb4, - 0x63, 0x29, 0x32, 0xd4, 0x44, 0xaf, 0x82, 0x60, 0x6d, 0xc3, 0x46, 0xcc, - 0x13, 0xfc, 0x4a, 0x12, 0x27, 0x22, 0x17, 0x65, 0x8b, 0x17, 0x00, 0xac, - 0x9d, 0xbd, 0x47, 0x70, 0xbe, 0xf1, 0x74, 0x5a, 0xd0, 0x4c, 0xb1, 0x01, - 0xd4, 0x46, 0xca, 0x50, 0x69, 0x97, 0xc6, 0x98, 0x9a, 0x89, 0x4a, 0x9a, - 0x13, 0xac, 0x83, 0xe9, 0x16, 0x61, 0xe5, 0x98, 0x94, 0x51, 0x36, 0x44, - 0x72, 0xac, 0x80, 0x9a, 0x0e, 0xa4, 0x56, 0x40, 0xd9, 0xc4, 0x19, 0xf3, - 0x79, 0xcc, 0x20, 0xf0, 0x52, 0x24, 0x71, 0xc3, 0xfa, 0x74, 0x0c, 0xfb, - 0x63, 0x58, 0x5d, 0x4d, 0xdc, 0x5c, 0x47, 0xb5, 0xba, 0xac, 0x4c, 0xb7, - 0xff, 0x3c, 0xe1, 0x16, 0x5c, 0x3e, 0x84, 0x0b, 0x30, 0xd6, 0x37, 0x6f, - 0x88, 0x0f, 0xc5, 0x8a, 0xf0, 0xb7, 0x65, 0xca, 0x24, 0x2a, 0x11, 0x45, - 0x47, 0x80, 0x61, 0x2f, 0x34, 0xb8, 0xfc, 0x1a, 0xe1, 0x1b, 0xea, 0xef, - 0xce, 0x9d, 0x64, 0xd0, 0x80, 0xa3, 0x05, 0x92, 0xd2, 0xc0, 0x50, 0x43, - 0x01, 0x78, 0x39, 0x5b, 0x86, 0xd8, 0x69, 0xfd, 0x21, 0x8f, 0x84, 0x5a, - 0xed, 0xa3, 0x8d, 0xb6, 0xbb, 0xdf, 0x63, 0x76, 0xf6, 0xa5, 0xc8, 0x8c, - 0x97, 0x67, 0x30, 0x1c, 0xc8, 0x1d, 0x32, 0x02, 0x03, 0x6f, 0x12, 0xdc, - 0x98, 0x06, 0x94, 0x3c, 0x73, 0xd8, 0x4a, 0x24, 0x33, 0xd7, 0x11, 0x2f, - 0x9e, 0x46, 0x2f, 0x3f, 0x10, 0x33, 0xaa, 0x65, 0x4d, 0xd4, 0x4c, 0x32, - 0x3c, 0x3b, 0xfc, 0x66, 0xf8, 0xf4, 0x83, 0xc1, 0xa2, 0xeb, 0xab, 0xbb, - 0x3e, 0x1a, 0x2e, 0xfa, 0x48, 0x39, 0x85, 0x96, 0xac, 0x09, 0x2e, 0x2c, - 0x93, 0xd3, 0xa5, 0x56, 0xc0, 0xa1, 0xca, 0xc0, 0xb7, 0x69, 0xb6, 0x74, - 0x88, 0x4d, 0x91, 0x8f, 0x9a, 0xec, 0x39, 0xb0, 0xb7, 0x55, 0x23, 0x83, - 0x2c, 0xe1, 0x3d, 0x11, 0xfc, 0xb6, 0xe4, 0x61, 0x3c, 0x5d, 0x16, 0xe9, - 0xdd, 0x6f, 0x5a, 0xc8, 0x5b, 0x56, 0x3d, 0xfe, 0xa7, 0x96, 0x3d, 0xfe, - 0xb8, 0x75, 0x6f, 0x30, 0x91, 0x5f, 0xb8, 0xee, 0x6d, 0x45, 0xdc, 0xff, - 0xef, 0x58, 0xf7, 0x67, 0x7d, 0x07, 0x1f, 0xf4, 0xf2, 0x97, 0x86, 0x4a, - 0x63, 0x0b, 0x9e, 0x69, 0x68, 0xe9, 0x26, 0xac, 0x5f, 0x49, 0x18, 0x6d, - 0xca, 0xa5, 0x4a, 0xa6, 0x77, 0xc9, 0x1a, 0x0c, 0x23, 0x98, 0x80, 0xb7, - 0x3e, 0x78, 0x62, 0xdc, 0x4e, 0x89, 0x5f, 0x5a, 0xf6, 0xaa, 0xbe, 0x76, - 0xff, 0xc4, 0xce, 0x39, 0x89, 0xc0, 0xef, 0x5d, 0xeb, 0xe6, 0x85, 0x7b, - 0x27, 0x97, 0xe6, 0xff, 0xd4, 0xce, 0xd5, 0xa4, 0xe5, 0xea, 0x2c, 0x50, - 0x40, 0xc1, 0xc6, 0x2e, 0x25, 0x7b, 0xe9, 0x5e, 0x9c, 0xa2, 0x8a, 0x8e, - 0xc3, 0xe9, 0x71, 0x01, 0x44, 0x4d, 0xd4, 0x3a, 0x25, 0x87, 0x4a, 0x85, - 0x56, 0xdd, 0x0d, 0x57, 0x30, 0x6c, 0xab, 0x41, 0x3c, 0xff, 0xcc, 0x99, - 0x35, 0x82, 0xe1, 0xc8, 0x40, 0x80, 0x48, 0x19, 0x99, 0x08, 0x7d, 0x81, - 0x34, 0xda, 0x42, 0x11, 0xa1, 0xb7, 0x03, 0xd4, 0xd2, 0xaa, 0xc3, 0x7c, - 0x90, 0x64, 0x2a, 0x87, 0xbb, 0x05, 0xc2, 0x73, 0x5d, 0x44, 0xfe, 0xff, - 0x91, 0x07, 0xbb, 0x8d, 0x3c, 0x2c, 0x28, 0xfe, 0xa3, 0x89, 0xc3, 0x85, - 0xb2, 0xfd, 0x4b, 0xe4, 0xd1, 0x76, 0xce, 0x36, 0x35, 0x3e, 0x8f, 0x97, - 0xc9, 0x78, 0xfe, 0x96, 0x2f, 0x97, 0x08, 0x54, 0x4d, 0xdc, 0xea, 0x27, - 0xe7, 0xdf, 0x3e, 0x87, 0x33, 0x63, 0xd8, 0x04, 0xc5, 0x39, 0x3d, 0x3a, - 0x38, 0x6f, 0x61, 0x61, 0xd7, 0x74, 0xcb, 0x2f, 0xd2, 0x3e, 0xdb, 0x3f, - 0x59, 0x30, 0x7d, 0xa9, 0xbf, 0x30, 0x11, 0xb5, 0x89, 0xde, 0xa6, 0x5f, - 0xd8, 0xf3, 0xe0, 0x7e, 0x8a, 0xa7, 0x81, 0x59, 0xaa, 0xf9, 0x9a, 0xc5, - 0xf2, 0xf1, 0x6c, 0xb2, 0x2d, 0x7f, 0xf6, 0xaf, 0xfe, 0x36, 0x99, 0x0f, - 0x1e, 0xa1, 0x95, 0xb8, 0x12, 0xbc, 0xae, 0x05, 0x64, 0xd2, 0x66, 0xbe, - 0xac, 0xab, 0x6b, 0x57, 0x37, 0xcd, 0xbb, 0x53, 0x15, 0x69, 0x2a, 0x0e, - 0xa0, 0x57, 0xd6, 0xcd, 0x92, 0x3f, 0x9d, 0x44, 0x0a, 0xea, 0x16, 0x35, - 0x13, 0x1e, 0xf0, 0xfd, 0xb6, 0x6f, 0xe9, 0x5f, 0xeb, 0xcd, 0xda, 0xe3, - 0xb0, 0xd3, 0xb6, 0xe6, 0x64, 0x14, 0x22, 0x2b, 0xd7, 0x9e, 0x14, 0xad, - 0x5f, 0x8a, 0x56, 0xa2, 0xba, 0xa9, 0xbf, 0x22, 0xfa, 0x8a, 0x49, 0xd8, - 0x80, 0x23, 0x10, 0xc8, 0xe9, 0x72, 0x6c, 0x99, 0x29, 0xe9, 0x7c, 0xbc, - 0x88, 0x25, 0x79, 0xbd, 0xbe, 0x05, 0x8f, 0xe3, 0xcb, 0x55, 0x67, 0x33, - 0x4f, 0xea, 0xf1, 0x96, 0x07, 0x45, 0x05, 0x49, 0x47, 0x9e, 0x8b, 0x2c, - 0xe3, 0x0a, 0xdb, 0x8a, 0x10, 0x28, 0x2d, 0x7d, 0x85, 0x48, 0x15, 0xdc, - 0x44, 0xf2, 0x48, 0x23, 0xff, 0xbe, 0x74, 0x00, 0x84, 0x51, 0x7e, 0x35, - 0xde, 0x7d, 0xf1, 0x7c, 0x97, 0xa5, 0xde, 0x55, 0x21, 0x30, 0x55, 0x85, - 0x36, 0xf3, 0x74, 0xf0, 0x64, 0xfb, 0xe9, 0xe0, 0x69, 0xe4, 0xb1, 0xd9, - 0x47, 0x49, 0x6b, 0x4a, 0x6e, 0x32, 0x46, 0x3a, 0xff, 0x48, 0x8f, 0xdc, - 0xdb, 0xe3, 0x43, 0xab, 0x1a, 0x8b, 0x24, 0xd5, 0x2a, 0x2c, 0xa5, 0x56, - 0x35, 0xe5, 0xc5, 0x93, 0x52, 0x08, 0xed, 0xa8, 0xde, 0xad, 0xcb, 0xe2, - 0xf3, 0x8d, 0x11, 0xb6, 0x32, 0xd7, 0x39, 0xd3, 0xba, 0x12, 0xcb, 0xba, - 0xd1, 0xf2, 0x67, 0x2d, 0x91, 0x78, 0xf5, 0xb5, 0x09, 0x56, 0x6e, 0xf0, - 0x81, 0x9d, 0x29, 0x27, 0xc4, 0x5b, 0xdb, 0x9d, 0xc6, 0x17, 0xae, 0xda, - 0x11, 0x31, 0x0c, 0x14, 0x9f, 0x2f, 0x14, 0x80, 0x89, 0x5f, 0xb1, 0x78, - 0xb1, 0x4a, 0x24, 0x91, 0xd9, 0xba, 0xd7, 0x86, 0x0c, 0x06, 0x70, 0x46, - 0x02, 0xe7, 0x07, 0x70, 0xfd, 0x6e, 0xbf, 0x6b, 0x57, 0x85, 0x19, 0xcb, - 0x83, 0x0a, 0xb2, 0x86, 0xf8, 0xb4, 0xfe, 0xd0, 0x6b, 0x51, 0x0e, 0x44, - 0xb5, 0x88, 0x5d, 0x87, 0x9d, 0x24, 0x0e, 0x06, 0x8d, 0x38, 0xca, 0x0d, - 0x33, 0x3d, 0xb5, 0xe2, 0x4c, 0x92, 0x71, 0x53, 0xc7, 0x72, 0x40, 0x1f, - 0xf4, 0xfc, 0x38, 0x5e, 0xc4, 0xa3, 0x74, 0x9a, 0x96, 0x69, 0x4b, 0x78, - 0xde, 0xaf, 0x28, 0xfb, 0x95, 0xe3, 0x45, 0x7f, 0x9e, 0xb5, 0xd9, 0x08, - 0x2f, 0xb9, 0xec, 0x49, 0x00, 0x76, 0xfb, 0xfe, 0xed, 0xd9, 0xd1, 0xf1, - 0xe9, 0xc1, 0x0f, 0xe6, 0xf5, 0x76, 0xa1, 0xc7, 0xa8, 0x1d, 0x9b, 0xc4, - 0xc5, 0xea, 0x7d, 0x91, 0x94, 0xf4, 0xe5, 0xe6, 0x93, 0x2d, 0xf6, 0x47, - 0xd5, 0xaf, 0x59, 0x56, 0xbf, 0xc2, 0x5a, 0x08, 0x6a, 0xb0, 0xf5, 0xf3, - 0xa8, 0x91, 0xc9, 0x6e, 0xc5, 0xd1, 0x50, 0xd2, 0xfd, 0x5a, 0x26, 0xd3, - 0x79, 0x52, 0x2a, 0xf0, 0x7d, 0xf4, 0xf2, 0xec, 0xfc, 0xf2, 0xd5, 0x5d, - 0x3c, 0xad, 0x93, 0x0c, 0x03, 0x09, 0x69, 0x8b, 0x85, 0x51, 0x88, 0xbc, - 0x19, 0x84, 0x30, 0x0e, 0x5d, 0xac, 0xa0, 0x3d, 0xd9, 0x06, 0x56, 0x71, - 0x79, 0xf9, 0xc3, 0xf9, 0xf1, 0xab, 0x97, 0xac, 0x32, 0x7f, 0xce, 0x8a, - 0xbe, 0x9a, 0x4a, 0xa0, 0x41, 0xf3, 0x3a, 0xaf, 0x16, 0xcd, 0xeb, 0xfb, - 0xfb, 0xa3, 0x93, 0xe1, 0xf9, 0xe9, 0xd9, 0xe1, 0xab, 0x97, 0xdf, 0xb3, - 0x81, 0x95, 0x0b, 0x6a, 0x04, 0xef, 0xba, 0xcf, 0x5c, 0x1c, 0x54, 0x13, - 0x09, 0xf8, 0xf8, 0xbb, 0xf7, 0xc7, 0x6f, 0xbf, 0x7d, 0xf5, 0xf2, 0x2e, - 0xce, 0x7b, 0x3c, 0x3f, 0x79, 0x9b, 0x13, 0x9a, 0x5b, 0xea, 0x2e, 0x54, - 0xf6, 0x92, 0x73, 0x0f, 0x46, 0xd3, 0x5b, 0xa9, 0xc1, 0x83, 0xc2, 0x37, - 0x8d, 0x00, 0x84, 0x4b, 0xc4, 0x69, 0xb3, 0xd1, 0x82, 0x7f, 0x8b, 0xbe, - 0x3c, 0xfd, 0x86, 0xdd, 0x5b, 0xee, 0x6e, 0x46, 0x94, 0x2b, 0x91, 0xc9, - 0xe7, 0xcf, 0x76, 0xf7, 0xb6, 0x82, 0x92, 0x1a, 0xec, 0x24, 0xa7, 0x11, - 0xdf, 0x36, 0x8c, 0x26, 0x3f, 0x1b, 0xe2, 0xac, 0x07, 0xbb, 0xd6, 0x5a, - 0xe2, 0x7c, 0x03, 0x08, 0xb0, 0x74, 0x1e, 0xcf, 0xb9, 0x90, 0x22, 0x42, - 0x94, 0x38, 0x32, 0xa3, 0x04, 0x82, 0x08, 0x3b, 0xb0, 0x1b, 0x79, 0xb8, - 0x97, 0x3e, 0x9a, 0x75, 0xc0, 0xc6, 0x6c, 0xbb, 0xa1, 0x69, 0x38, 0xea, - 0xf7, 0x6e, 0x27, 0xe4, 0x5f, 0xfb, 0x60, 0xb4, 0x27, 0xc1, 0x87, 0xb0, - 0x56, 0x97, 0x8c, 0xce, 0xbe, 0x60, 0xd7, 0xe5, 0x23, 0x31, 0x2f, 0x58, - 0x3f, 0x8f, 0x73, 0x5c, 0x65, 0x56, 0x81, 0xff, 0x49, 0xc9, 0xd4, 0x21, - 0xae, 0xbd, 0xbb, 0x38, 0x5d, 0xc3, 0xbe, 0x5c, 0x4d, 0x79, 0x8f, 0xfd, - 0x66, 0xd5, 0xe1, 0x5d, 0xc3, 0xc0, 0x59, 0x3b, 0x74, 0xfb, 0x11, 0x5b, - 0xfd, 0xed, 0x47, 0x1c, 0x60, 0x92, 0x75, 0x07, 0x67, 0xbe, 0xab, 0xbb, - 0x03, 0x5a, 0x10, 0xd4, 0x5d, 0x9a, 0x42, 0x8a, 0x24, 0xdc, 0x6d, 0x63, - 0x08, 0xbc, 0x7e, 0x1b, 0x6b, 0x02, 0xe1, 0x22, 0x71, 0xc3, 0x28, 0x96, - 0x4c, 0x26, 0xc8, 0xd3, 0x18, 0x8f, 0x65, 0x21, 0x56, 0x67, 0xa1, 0x48, - 0x34, 0x1b, 0x2d, 0x50, 0x86, 0x42, 0x50, 0x37, 0x1c, 0x9f, 0x54, 0xba, - 0x8a, 0xdc, 0xd8, 0xbb, 0x6a, 0x04, 0x9a, 0x11, 0x69, 0xe0, 0x11, 0xac, - 0x0b, 0x12, 0x1a, 0x67, 0xe4, 0x93, 0x52, 0xc4, 0xe8, 0xcc, 0x5a, 0x06, - 0x87, 0x33, 0x4f, 0x57, 0x41, 0xd8, 0x82, 0x6c, 0x6c, 0x10, 0x12, 0xde, - 0x30, 0x5b, 0xb3, 0xc9, 0x68, 0xe0, 0xe8, 0xcd, 0x08, 0x0d, 0x52, 0x02, - 0xfb, 0xaf, 0x36, 0x87, 0x5b, 0x4a, 0xc6, 0x42, 0x6e, 0xe7, 0xef, 0x7c, - 0x92, 0x4f, 0x5b, 0xf5, 0xa9, 0x75, 0x04, 0xe8, 0xd4, 0x6d, 0xbf, 0x50, - 0x9d, 0x7e, 0x87, 0x41, 0x0c, 0xd5, 0x5e, 0x09, 0x08, 0x43, 0x3b, 0x6e, - 0x74, 0x4b, 0x71, 0x99, 0x18, 0x9f, 0x44, 0x14, 0xb7, 0xe2, 0xf0, 0x49, - 0xbc, 0x6d, 0x74, 0x30, 0x85, 0x77, 0x99, 0x78, 0xe3, 0xaa, 0x57, 0xef, - 0x63, 0xd0, 0x89, 0x2a, 0x48, 0x89, 0x62, 0x3f, 0xdd, 0x6a, 0x60, 0x8a, - 0xae, 0x30, 0xf4, 0xd0, 0x16, 0x10, 0xe6, 0xc3, 0xf2, 0x50, 0x6b, 0x43, - 0x43, 0x80, 0x05, 0x58, 0x49, 0x33, 0x1f, 0x1c, 0x72, 0x03, 0x52, 0x71, - 0xa5, 0x68, 0x0b, 0xa7, 0xba, 0xc0, 0x95, 0xe5, 0x42, 0x98, 0x14, 0x2d, - 0x5f, 0xec, 0xc2, 0xda, 0x26, 0x84, 0xb0, 0x36, 0xdc, 0x11, 0xd9, 0xc4, - 0x96, 0x45, 0xb5, 0x2a, 0x8e, 0x96, 0x73, 0xc0, 0x6c, 0xa0, 0x7f, 0xe9, - 0x41, 0xf8, 0x18, 0x42, 0xaf, 0x25, 0x59, 0x47, 0x81, 0x9d, 0xfb, 0x97, - 0x0d, 0x48, 0x23, 0x7e, 0x61, 0x11, 0xa7, 0x79, 0x10, 0x4a, 0x83, 0xf0, - 0x35, 0x9e, 0xbb, 0x50, 0x92, 0x06, 0x3e, 0x42, 0xea, 0x1d, 0x08, 0x69, - 0xc3, 0x4f, 0xb2, 0xb6, 0xa4, 0x44, 0xe7, 0x7a, 0x9a, 0x8d, 0x46, 0x34, - 0xa9, 0x8e, 0x49, 0xa4, 0x34, 0xc2, 0x38, 0xbf, 0x86, 0x92, 0xd6, 0x33, - 0xbc, 0x2b, 0x7f, 0x58, 0x01, 0x97, 0x8a, 0xbe, 0xd6, 0x45, 0xfa, 0x6b, - 0x1d, 0xb1, 0xcc, 0xe3, 0x5f, 0x03, 0xc8, 0x34, 0xac, 0x49, 0x29, 0xee, - 0x6f, 0x7c, 0x1e, 0x59, 0xff, 0x75, 0x8e, 0x5f, 0xae, 0x38, 0x56, 0xd2, - 0x5d, 0x9f, 0xca, 0x7c, 0xc0, 0x72, 0x14, 0xc3, 0x32, 0x6d, 0x09, 0xb6, - 0xe7, 0x09, 0xd3, 0x04, 0x3a, 0x7f, 0xe7, 0x51, 0xec, 0xf6, 0xf8, 0xdf, - 0xbd, 0x7f, 0x74, 0x0c, 0xa9, 0x94, 0xb1, 0xa2, 0x65, 0xf0, 0x25, 0xa3, - 0x43, 0x16, 0x06, 0x8f, 0xda, 0x82, 0x86, 0xca, 0x15, 0xbc, 0xd6, 0xb6, - 0x9e, 0xce, 0xae, 0x7f, 0xdc, 0xed, 0xef, 0xee, 0xec, 0xec, 0xfc, 0x34, - 0x58, 0xf0, 0xd2, 0x5d, 0xa1, 0x79, 0xfa, 0x77, 0xb0, 0x48, 0xc7, 0x1c, - 0xf2, 0x42, 0x9b, 0x99, 0xc6, 0xdc, 0xf4, 0xb6, 0xf4, 0xb7, 0x1d, 0x5e, - 0x9f, 0x39, 0x27, 0xef, 0xb4, 0xf2, 0x71, 0x07, 0x48, 0x4d, 0x47, 0xe2, - 0x6a, 0xa9, 0xe0, 0xf5, 0x2c, 0x77, 0x4f, 0x96, 0x12, 0x8d, 0x20, 0xd1, - 0x1a, 0xea, 0x26, 0xe6, 0xcd, 0x26, 0x52, 0x95, 0x62, 0x60, 0x7c, 0xe3, - 0xf5, 0x5a, 0x2b, 0x17, 0xe3, 0xdb, 0x44, 0x50, 0x7d, 0x38, 0x0f, 0x36, - 0xa8, 0xde, 0xd2, 0x73, 0x89, 0x01, 0x38, 0xb0, 0x4a, 0xf7, 0x72, 0x6e, - 0x9b, 0x40, 0xc3, 0x7c, 0xcc, 0x48, 0xfa, 0xe4, 0xaf, 0x8d, 0xcb, 0xb9, - 0x7a, 0x11, 0x56, 0xbd, 0x22, 0x91, 0xfc, 0xd2, 0x3a, 0x72, 0x69, 0x9b, - 0x82, 0xee, 0x4d, 0x1d, 0xa1, 0x99, 0x03, 0xc1, 0xfc, 0xfd, 0x3b, 0x81, - 0x34, 0x1e, 0x65, 0x05, 0xbc, 0xf5, 0xba, 0x68, 0x0d, 0xe5, 0xa7, 0x18, - 0xa7, 0xe9, 0x6f, 0x2a, 0xb5, 0xa2, 0x57, 0x74, 0xf3, 0xf8, 0x86, 0xc5, - 0xb2, 0x5d, 0xb2, 0x5b, 0xe1, 0x66, 0xf9, 0xdd, 0x12, 0x73, 0x87, 0xdb, - 0xaf, 0xff, 0x83, 0x36, 0x8c, 0xab, 0x1b, 0x36, 0xaa, 0x3d, 0x61, 0xaa, - 0xa2, 0x28, 0x4e, 0x93, 0x98, 0x83, 0x8a, 0xcd, 0x4c, 0x73, 0x93, 0x3c, - 0x88, 0xc0, 0xd0, 0x84, 0x09, 0x10, 0x9f, 0x2e, 0x7b, 0x4d, 0x54, 0xef, - 0x3b, 0x18, 0x1e, 0x9e, 0x9c, 0x54, 0x14, 0x62, 0x5e, 0xbc, 0x01, 0x43, - 0xa0, 0x8b, 0x9b, 0xa5, 0x98, 0xd1, 0x2a, 0xb2, 0x93, 0x07, 0xc3, 0x6d, - 0xc8, 0x29, 0x1c, 0x92, 0x86, 0xf4, 0x51, 0x46, 0x20, 0x8f, 0x8b, 0xd4, - 0x62, 0x00, 0x63, 0xc9, 0xfd, 0x5a, 0xce, 0x59, 0xa2, 0xe0, 0xc0, 0x98, - 0x9b, 0x25, 0x1d, 0xc9, 0xe2, 0x23, 0x4d, 0x6f, 0x1f, 0x4b, 0x8f, 0xbf, - 0x3d, 0xe9, 0xb5, 0x04, 0x3b, 0x9d, 0xe7, 0x1a, 0x53, 0x26, 0xa1, 0x2f, - 0x91, 0x44, 0x2a, 0x31, 0x6e, 0x39, 0xdf, 0x1a, 0x42, 0x81, 0x19, 0x8a, - 0x09, 0x61, 0xb4, 0xb8, 0x52, 0x0c, 0x40, 0xab, 0x05, 0x69, 0x47, 0xf5, - 0x84, 0xa2, 0x8e, 0x9b, 0xff, 0xb4, 0x22, 0x85, 0x5a, 0x8d, 0xa0, 0xe8, - 0x25, 0xff, 0xbb, 0x6f, 0x05, 0x7a, 0xd6, 0x95, 0xde, 0x74, 0x99, 0x28, - 0xcd, 0x92, 0x3e, 0x21, 0xb0, 0xaf, 0x5c, 0xb7, 0x8f, 0x83, 0xb9, 0x0f, - 0xa2, 0x33, 0xb7, 0x2f, 0xbe, 0x28, 0x20, 0xda, 0xac, 0x57, 0x28, 0x5b, - 0x07, 0xec, 0x8e, 0xf4, 0xc3, 0xeb, 0x54, 0x09, 0xdf, 0x8f, 0x6b, 0xd3, - 0x8c, 0x8b, 0x6c, 0x8f, 0xcc, 0x45, 0x7b, 0xa6, 0x9b, 0x78, 0x9a, 0xcd, - 0xb7, 0x5a, 0x97, 0x0a, 0x5b, 0x45, 0x82, 0x26, 0xc7, 0x90, 0x89, 0xf5, - 0xce, 0x15, 0x05, 0x6c, 0x8b, 0x03, 0x40, 0xf0, 0x0b, 0xe4, 0x5a, 0x2e, - 0xe9, 0x71, 0x7e, 0xd2, 0xd7, 0x30, 0x48, 0x45, 0xde, 0x97, 0x6c, 0x37, - 0x01, 0xb6, 0xaf, 0xe3, 0xda, 0xb4, 0x2d, 0x84, 0xcf, 0xa7, 0x16, 0xd4, - 0xe8, 0x0a, 0xf4, 0xd5, 0x72, 0x51, 0x9b, 0x9b, 0x70, 0x1b, 0x1b, 0x5f, - 0x5d, 0xa8, 0x44, 0xe2, 0xb3, 0x60, 0x5c, 0x84, 0xca, 0xde, 0x48, 0xab, - 0xe0, 0xb9, 0x34, 0x49, 0xb5, 0x28, 0xc8, 0x35, 0x8e, 0x95, 0x69, 0x83, - 0x35, 0x0a, 0x48, 0x7e, 0x9f, 0x78, 0xce, 0x32, 0xda, 0xef, 0xfc, 0x86, - 0x27, 0xe3, 0x9d, 0x59, 0xc0, 0x7f, 0x7d, 0x82, 0x6c, 0x80, 0xfc, 0xb7, - 0x12, 0xe4, 0xff, 0xbf, 0xd7, 0x7e, 0xaf, 0xdf, 0xfd, 0xb6, 0x7b, 0xdd, - 0xe7, 0x79, 0xbf, 0x24, 0xa1, 0x6f, 0xdd, 0xbe, 0xc6, 0x10, 0x22, 0x0d, - 0xe4, 0xbf, 0x01, 0xd7, 0x0a, 0xb5, 0x8b, 0xaf, 0x9c, 0x1b, 0x5a, 0x22, - 0x17, 0x07, 0xd5, 0x44, 0xc7, 0x30, 0x58, 0x0c, 0x93, 0xd4, 0xa9, 0xd1, - 0xcd, 0x62, 0x4b, 0x12, 0x12, 0x82, 0xd4, 0xf5, 0x0f, 0x54, 0x72, 0x30, - 0x35, 0x45, 0x1c, 0x5e, 0x95, 0x04, 0x63, 0x49, 0x7f, 0xe5, 0xb0, 0x10, - 0x03, 0x90, 0x80, 0x88, 0xde, 0xb6, 0xb8, 0x3c, 0x21, 0x0e, 0x70, 0x17, - 0xa3, 0x60, 0xcf, 0x05, 0x29, 0x85, 0xc5, 0x13, 0x14, 0x8c, 0xe2, 0x03, - 0x78, 0xf0, 0x6a, 0x72, 0x0a, 0xd6, 0x33, 0xb8, 0xc6, 0xda, 0xcb, 0xaa, - 0x8a, 0xe1, 0x92, 0xd7, 0x12, 0x32, 0x0a, 0xd0, 0x57, 0xed, 0x2a, 0xd9, - 0x2e, 0xe3, 0xe9, 0x6d, 0xcc, 0x12, 0xc9, 0x20, 0x7a, 0x23, 0xeb, 0xea, - 0x8b, 0xde, 0x36, 0xe2, 0x3f, 0x46, 0xcb, 0xeb, 0x6b, 0xa0, 0x4b, 0x1e, - 0xc8, 0x0d, 0x54, 0x18, 0x40, 0x04, 0x0c, 0x93, 0xdd, 0xcf, 0xbb, 0x1a, - 0xc8, 0xd9, 0xb9, 0xa1, 0xcb, 0x9a, 0x16, 0x89, 0xc5, 0xa1, 0x8e, 0xd6, - 0xc2, 0x6e, 0x64, 0x79, 0x31, 0xfd, 0xf7, 0xa2, 0xee, 0xcb, 0xf6, 0x97, - 0x48, 0x41, 0x4f, 0x68, 0x54, 0x52, 0x07, 0xc5, 0xa9, 0xff, 0xb4, 0x86, - 0x37, 0x29, 0x5d, 0x68, 0xf3, 0x66, 0xf0, 0x96, 0x16, 0x56, 0x83, 0x87, - 0x40, 0x02, 0x7a, 0xe3, 0xd6, 0x41, 0xfe, 0xd1, 0xfa, 0x33, 0xc8, 0x58, - 0xa4, 0x40, 0x5e, 0x65, 0x8d, 0xe4, 0x7a, 0x4d, 0x7f, 0xd2, 0xfe, 0x1f, - 0x2d, 0xba, 0x95, 0x1a, 0xb7, 0x10, 0x59, 0x08, 0x94, 0xa7, 0x78, 0x4b, - 0x32, 0xa9, 0xc2, 0x17, 0x98, 0x50, 0xa9, 0xa7, 0x2e, 0x25, 0xf6, 0x53, - 0xda, 0x46, 0x11, 0x15, 0x13, 0x2f, 0xfe, 0x78, 0xb8, 0x48, 0xb3, 0x08, - 0x73, 0x79, 0x50, 0x2d, 0x28, 0xb1, 0xee, 0x6a, 0x34, 0x93, 0x87, 0x3f, - 0x35, 0x45, 0x89, 0x4a, 0x6b, 0x5a, 0xf5, 0x15, 0xb7, 0x26, 0x3f, 0x68, - 0x15, 0xfb, 0xd4, 0xaa, 0xda, 0x6b, 0xa2, 0x48, 0x20, 0x51, 0xca, 0xc1, - 0x88, 0x38, 0x39, 0xa4, 0x2a, 0x44, 0x9b, 0xcd, 0xfc, 0x9f, 0x95, 0xc3, - 0x2a, 0x8d, 0x3d, 0x22, 0x88, 0x01, 0xdc, 0x6d, 0xe8, 0x82, 0x8c, 0x04, - 0x53, 0xda, 0xc2, 0xfe, 0x10, 0x57, 0x14, 0x9c, 0x8a, 0xa0, 0x7e, 0x4a, - 0xb3, 0x52, 0x1b, 0x84, 0xa3, 0x4a, 0xc5, 0x4b, 0x31, 0x28, 0x8b, 0x6e, - 0x2d, 0xf6, 0x2e, 0x17, 0x61, 0x6e, 0x68, 0xd6, 0x29, 0x0c, 0x5a, 0xc5, - 0xa0, 0xad, 0xda, 0x81, 0x06, 0xd9, 0x89, 0x58, 0xa6, 0xbb, 0xa8, 0x49, - 0x3d, 0xac, 0x42, 0x58, 0x13, 0x1c, 0x7c, 0x0f, 0xaa, 0x77, 0xd1, 0xeb, - 0x4d, 0x69, 0x1a, 0x85, 0x9c, 0x9e, 0xe4, 0x13, 0x08, 0xd0, 0x2b, 0x2d, - 0x1e, 0x93, 0xa2, 0x6a, 0xc7, 0xfc, 0xd6, 0x82, 0x96, 0x24, 0xdf, 0x20, - 0x19, 0x2f, 0xcb, 0xaa, 0x1d, 0x37, 0x18, 0x93, 0xc6, 0x24, 0x63, 0x48, - 0x9b, 0x38, 0x03, 0x0a, 0xbe, 0xd8, 0x71, 0x10, 0xd1, 0xfb, 0x9d, 0x2d, - 0x93, 0xdb, 0xa1, 0xd6, 0xac, 0x43, 0x25, 0x06, 0x91, 0xdb, 0x90, 0x49, - 0x52, 0x85, 0x91, 0x01, 0xc5, 0xc6, 0xa4, 0x7e, 0x4d, 0x5b, 0xf7, 0x44, - 0x7e, 0x79, 0x6b, 0xef, 0xaf, 0x25, 0x7f, 0x24, 0xe8, 0xdc, 0x95, 0x1f, - 0xd0, 0xd4, 0x92, 0x62, 0x0d, 0x30, 0x45, 0xd0, 0x73, 0xc6, 0x28, 0x77, - 0x21, 0x70, 0xb4, 0xbd, 0x6a, 0x8b, 0xbf, 0xdf, 0x44, 0x3f, 0xba, 0x7b, - 0x1e, 0x98, 0x6f, 0x98, 0x01, 0xe3, 0x23, 0x5d, 0xce, 0xb4, 0xa9, 0x46, - 0xdc, 0xe6, 0xa3, 0xa7, 0xf4, 0xe3, 0x1b, 0xfe, 0x61, 0x65, 0x9f, 0x19, - 0x2b, 0xcb, 0xcc, 0x17, 0x4d, 0xe0, 0x03, 0x2e, 0x0d, 0x27, 0xe7, 0x7e, - 0x08, 0x2a, 0x7a, 0x8d, 0x5f, 0xf2, 0xe4, 0x91, 0x77, 0x68, 0x6e, 0x3f, - 0xb3, 0x03, 0x71, 0x59, 0x66, 0x4c, 0x89, 0x63, 0x24, 0x6a, 0xcc, 0x18, - 0x59, 0xd5, 0x11, 0x8c, 0xfe, 0xa9, 0x1e, 0xaa, 0x02, 0x47, 0x49, 0x99, - 0x4b, 0xba, 0x06, 0xca, 0x69, 0x7d, 0x7f, 0x52, 0xf8, 0xaa, 0x15, 0x72, - 0xf1, 0xd1, 0xb9, 0x3d, 0x56, 0x3e, 0xb7, 0x81, 0x19, 0x59, 0x6b, 0x98, - 0x97, 0x82, 0x16, 0xf3, 0xd9, 0xc7, 0xad, 0xe2, 0x11, 0xdf, 0x32, 0x76, - 0x0b, 0x3b, 0x2c, 0x32, 0x2d, 0xda, 0x2a, 0x92, 0x97, 0x2f, 0xda, 0x8a, - 0x87, 0x55, 0x42, 0x50, 0xf4, 0xe4, 0xf6, 0xc1, 0xe1, 0xd2, 0x43, 0x3c, - 0x1f, 0x98, 0xcb, 0xad, 0x99, 0x5a, 0x66, 0x74, 0xd1, 0xe6, 0x2b, 0x7f, - 0xb5, 0x45, 0x74, 0x4d, 0x0e, 0x04, 0x8d, 0x1a, 0x9d, 0xaf, 0x49, 0xe0, - 0x9d, 0x90, 0xd8, 0x33, 0x65, 0x0b, 0xaf, 0xa4, 0x1e, 0xfd, 0xae, 0x51, - 0x88, 0xba, 0x58, 0xcd, 0xc7, 0x37, 0x47, 0x6f, 0x87, 0xeb, 0x92, 0x78, - 0xd3, 0xc2, 0x45, 0x2b, 0x73, 0x78, 0x09, 0x3f, 0x4d, 0x42, 0x1c, 0xb3, - 0x45, 0x48, 0x7f, 0x1a, 0xcd, 0xd2, 0x02, 0xae, 0x71, 0xfe, 0xf6, 0xf8, - 0xab, 0x33, 0xfb, 0xb1, 0x76, 0xc9, 0x1f, 0x5d, 0xe1, 0x53, 0x4e, 0xd0, - 0x7d, 0x2c, 0xd7, 0xd9, 0x06, 0xe7, 0x6a, 0x4c, 0x79, 0x2f, 0x04, 0x11, - 0xe4, 0x94, 0x5f, 0x17, 0x5a, 0xec, 0x29, 0x49, 0xe2, 0xa3, 0x7c, 0x5d, - 0x16, 0x37, 0x1d, 0xb7, 0xbd, 0xaf, 0xbe, 0x6c, 0xde, 0x56, 0x47, 0x6f, - 0xd7, 0x74, 0xc7, 0xdf, 0xf4, 0x2d, 0x81, 0x49, 0xaf, 0x68, 0x2d, 0x6c, - 0x87, 0x6c, 0xf2, 0x96, 0x93, 0x77, 0x7e, 0x62, 0x3f, 0x2a, 0x53, 0xb7, - 0x2b, 0x91, 0x8f, 0xbb, 0xd0, 0xbc, 0xe0, 0x33, 0x00, 0x9a, 0x64, 0x1a, - 0xd3, 0x35, 0x19, 0xb5, 0x54, 0xc9, 0x0d, 0xac, 0xfe, 0x0e, 0xd9, 0x4e, - 0xbc, 0x21, 0x7e, 0x95, 0x15, 0x58, 0xd1, 0x0a, 0x72, 0x21, 0x97, 0x5e, - 0x2a, 0xbb, 0xcf, 0xd7, 0xa4, 0x5a, 0x37, 0xf5, 0xca, 0xfe, 0x3d, 0x5d, - 0x52, 0x70, 0x4c, 0xb3, 0x0c, 0x18, 0xbd, 0x94, 0xeb, 0xe8, 0xf3, 0xc6, - 0x81, 0x10, 0xc4, 0x17, 0xb3, 0x0a, 0x9b, 0x13, 0x10, 0xf7, 0x3a, 0x1b, - 0x78, 0x1c, 0x66, 0x10, 0x8a, 0xbd, 0x27, 0xa8, 0xa5, 0xc6, 0xd3, 0x14, - 0x04, 0xa1, 0x46, 0xb0, 0x28, 0xc9, 0x76, 0xde, 0x39, 0x61, 0x61, 0x06, - 0xd2, 0x75, 0xa4, 0x25, 0x0e, 0xcb, 0xdc, 0xd9, 0x87, 0x59, 0xfe, 0xd5, - 0xcc, 0x6a, 0x71, 0x76, 0x37, 0x82, 0x0b, 0x1e, 0xd8, 0x5c, 0xf3, 0x60, - 0x37, 0x53, 0x55, 0x44, 0x76, 0x35, 0xa7, 0x24, 0xb7, 0x5a, 0x1b, 0x0e, - 0x92, 0x84, 0x5b, 0x63, 0x2a, 0x11, 0x05, 0xd5, 0x91, 0x87, 0x3b, 0xb0, - 0x8e, 0x71, 0x8e, 0x95, 0x18, 0x80, 0x24, 0x5f, 0x19, 0x89, 0xcd, 0xe3, - 0x25, 0x1b, 0xae, 0xe0, 0x78, 0x40, 0x79, 0xba, 0xd6, 0xe6, 0x56, 0x7c, - 0x6f, 0x77, 0xbe, 0x30, 0x73, 0x59, 0xc7, 0xac, 0xe9, 0x1e, 0x80, 0x4c, - 0xab, 0x72, 0xc4, 0x16, 0x5c, 0x6e, 0x4b, 0xd1, 0xe2, 0x63, 0x14, 0xa7, - 0x01, 0xaa, 0xe9, 0xa0, 0x2c, 0x53, 0xe7, 0x8b, 0x7e, 0xa7, 0xf5, 0xf6, - 0x0b, 0x8a, 0x6d, 0x45, 0x0a, 0x93, 0x6d, 0xd6, 0x6e, 0x33, 0xef, 0x49, - 0x2f, 0xa6, 0x23, 0x31, 0x9c, 0x7e, 0x99, 0x96, 0xcb, 0xb2, 0x11, 0x96, - 0xa8, 0x19, 0xfa, 0xf0, 0xc8, 0x42, 0x47, 0xe0, 0x05, 0xf7, 0x5e, 0x53, - 0x08, 0x7b, 0x6c, 0x0e, 0x2c, 0x11, 0x59, 0xa8, 0x36, 0xc6, 0x11, 0xd0, - 0x10, 0x18, 0xe6, 0xa7, 0x2e, 0xae, 0x1c, 0xf0, 0x45, 0xef, 0x47, 0x87, - 0xdb, 0xc9, 0xa3, 0x2d, 0x16, 0xd1, 0xef, 0xff, 0x6e, 0x5f, 0x02, 0x92, - 0xe2, 0x1f, 0xb6, 0x5e, 0x56, 0x08, 0xab, 0x5d, 0xea, 0xfe, 0xbd, 0xb7, - 0xc9, 0xc8, 0xca, 0x20, 0x4b, 0x90, 0x9b, 0xfb, 0xbd, 0xab, 0x10, 0xea, - 0x9a, 0x88, 0xe6, 0xc9, 0xbd, 0x48, 0x4a, 0x0d, 0x9d, 0x40, 0x24, 0xcd, - 0xbf, 0x70, 0x45, 0x5c, 0x7a, 0x85, 0x24, 0x46, 0x76, 0xfc, 0x4b, 0x22, - 0x9c, 0x90, 0xd7, 0x5f, 0x72, 0x15, 0xed, 0x49, 0xf0, 0xa1, 0x81, 0xb3, - 0x3c, 0x2a, 0x9f, 0x37, 0xa5, 0x10, 0x76, 0x48, 0xee, 0x63, 0x37, 0x7e, - 0xdf, 0x17, 0xb8, 0x11, 0xa5, 0x6e, 0x9e, 0x2e, 0x8d, 0xd9, 0x3e, 0xb3, - 0x22, 0xac, 0xf3, 0x27, 0x7b, 0xfd, 0x40, 0x99, 0xee, 0x35, 0x6a, 0x1a, - 0xb2, 0xe7, 0x91, 0xe5, 0xa4, 0xa0, 0x4e, 0x1e, 0xd3, 0xf8, 0xef, 0x23, - 0xad, 0x7c, 0xc4, 0xce, 0x2c, 0x49, 0xea, 0x9a, 0x98, 0x56, 0x1a, 0x14, - 0xee, 0x6e, 0xd5, 0xe3, 0x5a, 0x89, 0x27, 0xd8, 0x1d, 0x27, 0xdf, 0x58, - 0x8a, 0xb4, 0x84, 0x88, 0xb4, 0xc5, 0x1b, 0x20, 0x90, 0xc2, 0x8a, 0x8b, - 0x4a, 0x43, 0x50, 0xa3, 0xe1, 0xad, 0x64, 0x83, 0xb1, 0xd4, 0x9b, 0x83, - 0x7a, 0xee, 0x9d, 0xf3, 0x70, 0x61, 0xb2, 0x3e, 0xd4, 0x7f, 0xbc, 0x48, - 0x81, 0xd6, 0x47, 0x91, 0x12, 0x84, 0x5d, 0x78, 0x65, 0xa7, 0x93, 0xe0, - 0xfc, 0x48, 0xdd, 0x99, 0xc8, 0x45, 0x26, 0xec, 0x3f, 0xde, 0x9c, 0x6a, - 0x45, 0x8d, 0xe9, 0xb3, 0x4f, 0xe7, 0x3d, 0xd2, 0xf9, 0xdc, 0x6a, 0x10, - 0x33, 0x49, 0x72, 0x86, 0xcb, 0xaa, 0xe5, 0xfb, 0xf9, 0x89, 0x31, 0x0a, - 0xbb, 0x6e, 0xe3, 0xe3, 0xbd, 0xc2, 0x32, 0xa1, 0xb5, 0x52, 0x68, 0x25, - 0xcc, 0xd7, 0x8a, 0xbc, 0x04, 0x92, 0x4b, 0xd8, 0x3a, 0xe0, 0xae, 0xba, - 0x36, 0xb8, 0xd3, 0xa8, 0x91, 0x2e, 0xf4, 0x19, 0x97, 0xed, 0x41, 0x32, - 0xc4, 0x34, 0x8d, 0x7d, 0x06, 0xb7, 0x4c, 0x81, 0x07, 0x17, 0xc3, 0xfa, - 0xca, 0xb2, 0x32, 0x89, 0xba, 0x8f, 0x37, 0xe7, 0xb0, 0x2c, 0x59, 0x2f, - 0x59, 0xb7, 0x32, 0x02, 0x4e, 0x5a, 0x5f, 0x99, 0xea, 0x82, 0xe8, 0x8a, - 0x78, 0x8d, 0xb3, 0xc5, 0xdf, 0x1e, 0xad, 0x49, 0xa5, 0x8c, 0xa2, 0x4d, - 0x43, 0x50, 0x14, 0xcb, 0xd9, 0x96, 0x02, 0x1c, 0xdb, 0x3d, 0xa8, 0xc0, - 0xc1, 0x1f, 0x6a, 0x0e, 0x79, 0x30, 0x8d, 0x14, 0x95, 0xa7, 0x8d, 0xe8, - 0x4e, 0xb6, 0xa1, 0xbc, 0x97, 0x24, 0x3f, 0xa7, 0x39, 0xb8, 0x94, 0x3f, - 0x14, 0x69, 0xd0, 0xec, 0xa7, 0x9e, 0x47, 0x21, 0x16, 0x27, 0x1a, 0xae, - 0xb0, 0x0f, 0x50, 0x2d, 0x64, 0x21, 0x9e, 0x7d, 0xa2, 0x28, 0x48, 0x30, - 0xae, 0xbb, 0x0c, 0x27, 0xb9, 0x48, 0xed, 0xe6, 0x9a, 0xa5, 0xd3, 0x0f, - 0x34, 0x37, 0x4d, 0x55, 0xa9, 0x82, 0x78, 0xb6, 0x6c, 0x3d, 0xc0, 0x98, - 0x10, 0x73, 0x4e, 0x56, 0xd4, 0x97, 0x1f, 0x28, 0x2b, 0x62, 0x43, 0xaa, - 0x4e, 0x14, 0x71, 0xea, 0x25, 0xbd, 0x6e, 0x86, 0x3e, 0x71, 0xaf, 0x96, - 0x71, 0xfe, 0x81, 0x5d, 0x94, 0x4c, 0x51, 0x44, 0xd5, 0x7a, 0x21, 0x12, - 0x96, 0x0f, 0x54, 0xae, 0x50, 0xe1, 0xa0, 0x7d, 0xc8, 0x55, 0xd2, 0xb2, - 0xac, 0x25, 0x0d, 0x37, 0xac, 0x8f, 0xcb, 0xd5, 0xb3, 0xf9, 0x45, 0x83, - 0x0a, 0x8a, 0x9e, 0x47, 0x1e, 0xb8, 0xc9, 0xc2, 0x56, 0x24, 0x64, 0x7b, - 0x33, 0xcb, 0x1f, 0x6f, 0x4e, 0x89, 0xf2, 0x23, 0x66, 0x14, 0x2f, 0x16, - 0xda, 0xdb, 0x87, 0x37, 0xe1, 0x37, 0x99, 0xaf, 0x96, 0xa7, 0xdb, 0x26, - 0xc6, 0x1b, 0xd9, 0xc4, 0xb7, 0xd9, 0x68, 0x59, 0xdc, 0x48, 0x56, 0x79, - 0x16, 0x7d, 0x98, 0x67, 0x05, 0xc0, 0xfb, 0xb5, 0x49, 0x3f, 0x52, 0x37, - 0x2f, 0x5c, 0x06, 0xc6, 0xd4, 0x53, 0x9e, 0xf6, 0x3f, 0xb4, 0x0e, 0x12, - 0xa5, 0x64, 0xf9, 0x87, 0x3c, 0x09, 0x08, 0x0a, 0x2e, 0xe9, 0x9a, 0xce, - 0x22, 0xa9, 0x5e, 0x83, 0x0f, 0x8d, 0x2e, 0x2d, 0xbc, 0x65, 0x25, 0x86, - 0xd3, 0x26, 0xe9, 0xd7, 0x41, 0x26, 0x05, 0xb0, 0x80, 0xc3, 0x47, 0x3f, - 0xc8, 0x19, 0xb4, 0x06, 0xbb, 0x00, 0xdb, 0x7b, 0x29, 0x68, 0x6c, 0xce, - 0xd8, 0x40, 0xc4, 0x6c, 0x89, 0xa9, 0xad, 0x37, 0xc7, 0x66, 0x13, 0xb1, - 0x2e, 0xdf, 0xb1, 0xe2, 0xb6, 0x86, 0x24, 0x2d, 0x48, 0x73, 0xdd, 0xc9, - 0x07, 0x04, 0x35, 0xaf, 0xb3, 0xe6, 0x8f, 0x07, 0xd5, 0xdb, 0x1e, 0xef, - 0x9f, 0x38, 0xdc, 0xc2, 0x2d, 0x8f, 0x9c, 0x7e, 0xe1, 0x3f, 0x3d, 0x47, - 0x79, 0x3d, 0x48, 0xa2, 0x1f, 0x47, 0x0a, 0x52, 0x2b, 0xc0, 0x65, 0x8c, - 0xd6, 0xf2, 0x49, 0x11, 0xbe, 0xc8, 0x5f, 0x6a, 0x4d, 0xcb, 0xfb, 0xb8, - 0xf8, 0xd0, 0xe8, 0x62, 0xd1, 0xc6, 0xaa, 0x8b, 0x20, 0xd6, 0x1f, 0x8d, - 0x94, 0x01, 0x51, 0x47, 0x62, 0xd4, 0xfa, 0x18, 0xae, 0xae, 0x39, 0xe1, - 0x48, 0x05, 0x77, 0x61, 0x2a, 0xc1, 0x7a, 0x85, 0xf9, 0x91, 0x1f, 0xbc, - 0xc6, 0xdb, 0x92, 0x27, 0x31, 0x56, 0x8c, 0xfc, 0xe3, 0x8f, 0xcf, 0xaf, - 0xce, 0xcb, 0x03, 0x5c, 0x20, 0xc0, 0xe9, 0x34, 0x0f, 0xcf, 0x48, 0x8f, - 0xd6, 0x07, 0xd6, 0x8c, 0x63, 0x28, 0xe5, 0x12, 0x0c, 0x8f, 0x51, 0x9d, - 0x41, 0x58, 0xc5, 0xb7, 0x66, 0x96, 0x7e, 0x8b, 0xac, 0xa2, 0x3b, 0x50, - 0x41, 0x52, 0x9d, 0x27, 0xc9, 0xc4, 0x50, 0xb3, 0x48, 0x30, 0xe1, 0xe3, - 0x53, 0x26, 0x1f, 0xc3, 0xe4, 0x0a, 0xda, 0xc2, 0x26, 0xba, 0x58, 0xfa, - 0x73, 0xf2, 0xde, 0x40, 0x5e, 0x42, 0xe1, 0xc0, 0xa7, 0xc7, 0x4b, 0x5c, - 0xa7, 0x88, 0x3e, 0x2c, 0x9f, 0xdb, 0xd3, 0x2d, 0x27, 0x10, 0xad, 0x69, - 0x48, 0x55, 0xf4, 0x71, 0xad, 0xad, 0x8d, 0x02, 0x43, 0x5b, 0xea, 0xaf, - 0x78, 0xb4, 0x2d, 0x0b, 0x80, 0x70, 0xc3, 0x82, 0xe8, 0xfb, 0x81, 0xcd, - 0x6a, 0x93, 0x8c, 0xd1, 0xa3, 0x2b, 0xd6, 0xa0, 0xcc, 0x5a, 0xe4, 0xa6, - 0xf5, 0xe3, 0x0f, 0xf4, 0xce, 0xc7, 0x7b, 0x84, 0x39, 0xd1, 0xa4, 0xb6, - 0x8d, 0x66, 0x49, 0x92, 0x64, 0xe2, 0xf7, 0x81, 0xbb, 0x8e, 0xd9, 0xeb, - 0x17, 0x20, 0xf0, 0xc8, 0x33, 0x81, 0x5a, 0x4a, 0x2a, 0x45, 0xb1, 0xcc, - 0x05, 0xad, 0xf7, 0xc3, 0xa4, 0xe4, 0xce, 0xbf, 0xb5, 0xc7, 0xf1, 0xbb, - 0x3c, 0x95, 0x05, 0x57, 0x74, 0xc4, 0x59, 0x5a, 0x33, 0x2a, 0xb7, 0x9f, - 0x58, 0x10, 0x1b, 0x96, 0x45, 0xce, 0xfd, 0x4a, 0xa3, 0x92, 0xd6, 0x3e, - 0x62, 0x4c, 0x8a, 0xac, 0xf3, 0x9e, 0x83, 0xbb, 0x75, 0x4c, 0x87, 0xf2, - 0x51, 0xff, 0x92, 0x3f, 0x52, 0x6a, 0xb0, 0x95, 0xe6, 0x93, 0x62, 0xb9, - 0x53, 0xbd, 0x96, 0xb2, 0xbd, 0x51, 0x5b, 0x04, 0x2f, 0xb4, 0x8a, 0x79, - 0x13, 0x8a, 0x8f, 0xb4, 0x01, 0x13, 0xe2, 0xb8, 0xb2, 0xe4, 0x5b, 0xad, - 0x6b, 0x4e, 0x5d, 0x92, 0xba, 0x1d, 0xb9, 0x6f, 0x90, 0x1f, 0x9f, 0x1a, - 0x0c, 0xc8, 0x18, 0x7e, 0x94, 0x8f, 0xe3, 0x1f, 0x1f, 0x91, 0x70, 0xce, - 0x63, 0x30, 0x1e, 0x5c, 0xb8, 0x31, 0xd0, 0x10, 0xfc, 0x87, 0xe2, 0x30, - 0x03, 0x75, 0x06, 0x95, 0xd9, 0xd3, 0xf9, 0x47, 0x89, 0x42, 0xed, 0x5a, - 0x45, 0x73, 0x1c, 0xd6, 0xdd, 0x7b, 0xa8, 0x2c, 0x92, 0xf1, 0x1d, 0x57, - 0x88, 0x1c, 0xcb, 0xe8, 0xea, 0xa3, 0x30, 0x2f, 0xed, 0x8b, 0xcb, 0x19, - 0x43, 0xfa, 0xd0, 0x38, 0x74, 0x32, 0x5a, 0x34, 0xa6, 0x5a, 0x1b, 0x1e, - 0xe9, 0xe3, 0x50, 0x09, 0xc7, 0x9c, 0xae, 0xc7, 0x4a, 0xf8, 0x07, 0x2e, - 0x5b, 0xd7, 0xa0, 0xe6, 0x3f, 0x01, 0x90, 0x40, 0x12, 0xc0, 0x1a, 0x79, - 0xa8, 0xcd, 0xcc, 0xed, 0x2b, 0xd2, 0x0b, 0x81, 0xf5, 0xf8, 0x1e, 0x90, - 0x88, 0x4c, 0x73, 0x86, 0x51, 0x8e, 0x0f, 0xcc, 0x6a, 0x2e, 0xd8, 0x54, - 0xcb, 0x85, 0x14, 0xbe, 0x63, 0x1c, 0x86, 0x0c, 0x16, 0xef, 0x0f, 0x15, - 0x3e, 0x6c, 0xc1, 0x5e, 0xb7, 0x18, 0xfb, 0x5a, 0x56, 0x79, 0x53, 0xbb, + 0xb5, 0xab, 0x2c, 0x5b, 0xdb, 0x98, 0x2f, 0x09, 0x88, 0xd5, 0x08, 0xb2, + 0x7a, 0x24, 0xc9, 0xc6, 0x93, 0xa1, 0x90, 0x9e, 0xdb, 0x46, 0x3d, 0x85, + 0x6d, 0x48, 0x02, 0xa3, 0x95, 0xab, 0x1c, 0x61, 0x59, 0xc5, 0xaf, 0x7a, + 0x52, 0xfd, 0x94, 0x95, 0xd5, 0xf5, 0x0b, 0xc2, 0x4f, 0xbf, 0xfa, 0x02, + 0x68, 0x65, 0xfc, 0xeb, 0x9f, 0xdd, 0xdb, 0xfc, 0x0f, 0x51, 0x31, 0x31, + 0x82, 0xb5, 0x13, 0x61, 0x51, 0xe4, 0x6a, 0x99, 0x43, 0xcc, 0x48, 0xe4, + 0x48, 0x4a, 0x61, 0x30, 0x83, 0x22, 0x56, 0x6e, 0xf2, 0xe6, 0xe0, 0xed, + 0xbb, 0x83, 0xd3, 0x47, 0x73, 0x6e, 0x42, 0x4b, 0xa9, 0x8b, 0x35, 0x83, + 0xe1, 0xb2, 0x22, 0x38, 0xf2, 0x79, 0xd4, 0x80, 0x7f, 0xb9, 0x09, 0x1f, + 0xaf, 0x42, 0xe3, 0x71, 0x28, 0xf4, 0xfa, 0x0c, 0x41, 0x3c, 0x3c, 0x9c, + 0x90, 0xe5, 0x10, 0xa8, 0x32, 0xd4, 0x1a, 0x21, 0x0e, 0xc7, 0x66, 0x1e, + 0x4b, 0x51, 0x2e, 0x67, 0xc6, 0x98, 0xa6, 0x25, 0x9b, 0x58, 0x19, 0x2b, + 0xf2, 0x54, 0x8b, 0x6c, 0x76, 0xbf, 0xe8, 0x62, 0x0d, 0xba, 0x2f, 0xbb, + 0xbc, 0x9f, 0x79, 0x3c, 0x6e, 0xc9, 0x97, 0x29, 0x5c, 0xa8, 0x47, 0xd4, + 0x15, 0xaa, 0xe9, 0xda, 0x20, 0x74, 0xcd, 0x64, 0x64, 0x08, 0xf5, 0x98, + 0x67, 0x91, 0x3a, 0x8a, 0x61, 0xd4, 0x6c, 0xf1, 0x50, 0x01, 0xd2, 0xcc, + 0xe5, 0xfb, 0x4a, 0x45, 0x2c, 0x5c, 0x0b, 0x7e, 0xe6, 0xa2, 0x81, 0xe4, + 0xcc, 0x31, 0x38, 0x92, 0x42, 0xa0, 0x25, 0xdb, 0xa2, 0x43, 0xdc, 0xda, + 0xe8, 0x78, 0x64, 0x20, 0x1c, 0xb9, 0x43, 0xb7, 0x72, 0xca, 0x61, 0xba, + 0xb0, 0xf4, 0xd2, 0x97, 0xd7, 0xd7, 0x9a, 0x91, 0x8c, 0x39, 0x03, 0xbf, + 0x81, 0x26, 0xdd, 0xc0, 0xb7, 0xd4, 0x7a, 0xb6, 0x44, 0xc5, 0x75, 0xf0, + 0xa9, 0xfe, 0x35, 0x89, 0x35, 0xd7, 0xd3, 0x6c, 0x94, 0x5d, 0x5d, 0x3d, + 0x42, 0x1b, 0x92, 0x3f, 0x86, 0x26, 0x84, 0x2d, 0x77, 0x38, 0x73, 0x84, + 0xdf, 0x1b, 0x49, 0x9a, 0x1f, 0xaa, 0x25, 0x0c, 0xc4, 0xca, 0xa9, 0x90, + 0xa5, 0x8d, 0x49, 0x05, 0x3e, 0xce, 0x55, 0xad, 0x40, 0x28, 0x4a, 0x82, + 0x8a, 0xc2, 0xa3, 0xe1, 0x8e, 0x1e, 0x74, 0x86, 0x44, 0x9b, 0xbf, 0xff, + 0xe3, 0xc7, 0x9f, 0x5a, 0x40, 0x9a, 0xd8, 0x75, 0x61, 0x61, 0xfd, 0x1c, + 0xd6, 0xac, 0xe9, 0x48, 0x70, 0x12, 0xb0, 0xc1, 0xca, 0xc3, 0x33, 0x6a, + 0xc9, 0x9b, 0x20, 0x74, 0xbb, 0x79, 0x61, 0x14, 0xbe, 0x43, 0xab, 0xab, + 0xaa, 0x61, 0x1b, 0xd3, 0xe4, 0x3a, 0x06, 0x6e, 0x83, 0xbf, 0x3c, 0x5d, + 0xee, 0xab, 0xb2, 0xea, 0x26, 0x00, 0x9c, 0xcb, 0x6d, 0x0f, 0x05, 0x29, + 0x98, 0x93, 0x2f, 0x4e, 0x9c, 0xcb, 0x26, 0xd8, 0x88, 0xaf, 0x78, 0x23, + 0x1a, 0xab, 0xe6, 0x01, 0x12, 0x7b, 0xf5, 0x60, 0xf3, 0x10, 0x96, 0x00, + 0x50, 0xba, 0x02, 0x1a, 0x50, 0x85, 0x05, 0x5a, 0x0b, 0x32, 0x96, 0xe5, + 0x35, 0x1c, 0x22, 0x11, 0xb9, 0x3c, 0x14, 0xa3, 0xcb, 0x9c, 0xfb, 0xea, + 0xf8, 0x32, 0x32, 0xe0, 0xb7, 0x06, 0xdd, 0x07, 0x65, 0x73, 0x1c, 0x04, + 0x81, 0x43, 0x89, 0x13, 0xbc, 0x0a, 0x57, 0xb8, 0xef, 0x3e, 0x2c, 0xdf, + 0xd1, 0xa6, 0x84, 0x28, 0xe4, 0x90, 0x68, 0x75, 0x06, 0x47, 0xe0, 0x97, + 0xed, 0xd4, 0xa0, 0x61, 0xba, 0xff, 0xd1, 0xf5, 0xe8, 0x2f, 0x6d, 0x11, + 0x48, 0x96, 0xe0, 0xd6, 0x48, 0xbb, 0xef, 0x9f, 0xf4, 0x1c, 0x20, 0x84, + 0xae, 0x97, 0x2c, 0xa3, 0x9b, 0xc9, 0xa8, 0x05, 0xe0, 0x6d, 0xdd, 0x38, + 0xbe, 0x3e, 0x3e, 0x38, 0xb2, 0xc9, 0xfe, 0x0f, 0x64, 0xce, 0x3b, 0x1f, + 0xe8, 0x28, 0x11, 0x50, 0xbb, 0xe5, 0xdc, 0xca, 0x2b, 0x61, 0xcf, 0x9c, + 0xe1, 0xa6, 0x25, 0x62, 0x8c, 0x44, 0x36, 0x46, 0xbb, 0x16, 0x4d, 0x0e, + 0x25, 0x82, 0xcc, 0xc1, 0x2c, 0x51, 0x95, 0x6e, 0x3d, 0x42, 0xcf, 0x50, + 0xe0, 0x55, 0x69, 0xad, 0x7f, 0x14, 0x14, 0x03, 0x0c, 0x08, 0xfb, 0x06, + 0x29, 0x71, 0xd3, 0x45, 0x23, 0x37, 0x2a, 0xbe, 0xe6, 0x94, 0xcb, 0xe9, + 0x22, 0x78, 0x36, 0x48, 0x9f, 0x7b, 0x29, 0x3f, 0xd7, 0xdc, 0x2b, 0xc7, + 0x80, 0xba, 0xd2, 0x47, 0xc3, 0x24, 0xd1, 0xeb, 0xa0, 0x78, 0x13, 0x49, + 0x1a, 0x7c, 0x65, 0x5c, 0xb3, 0xd1, 0x16, 0x37, 0x3e, 0xb1, 0xd0, 0xfa, + 0x3a, 0x04, 0x15, 0x8a, 0x7d, 0x05, 0xf0, 0x24, 0x68, 0xbd, 0x92, 0x6e, + 0xa5, 0xc9, 0x6b, 0x56, 0xb6, 0x68, 0xd2, 0xa8, 0x29, 0x43, 0xdc, 0xa6, + 0x28, 0x49, 0x0a, 0xb4, 0x91, 0xf1, 0x4b, 0x37, 0x71, 0x00, 0xe8, 0x27, + 0x10, 0x0e, 0xe2, 0x69, 0xf6, 0xc7, 0xc6, 0xfc, 0x9a, 0xcd, 0xca, 0x1d, + 0x4e, 0xb1, 0x53, 0xe0, 0xb8, 0x25, 0xb6, 0x0d, 0xc2, 0x36, 0x27, 0xfb, + 0xf3, 0x4b, 0x9a, 0xd8, 0xa7, 0x5d, 0x86, 0xd1, 0x74, 0x6b, 0x8e, 0xab, + 0x8a, 0xd6, 0xce, 0x99, 0xca, 0xe1, 0x04, 0x15, 0xc3, 0x09, 0xcf, 0xd1, + 0xd2, 0x08, 0x91, 0xb4, 0x87, 0x52, 0xee, 0x8d, 0x5b, 0x8f, 0xaf, 0xe1, + 0xa2, 0x5c, 0x5e, 0x61, 0x16, 0x2c, 0x4c, 0x89, 0x43, 0x04, 0x03, 0xf5, + 0xb5, 0x51, 0x33, 0x14, 0x21, 0xb7, 0x35, 0x33, 0xbd, 0x3f, 0x1e, 0xaf, + 0xf3, 0xed, 0xea, 0x74, 0x7c, 0xf5, 0x19, 0xc7, 0xea, 0xd9, 0x9e, 0x26, + 0x65, 0xc5, 0x93, 0x9c, 0x1d, 0x1c, 0x6c, 0x63, 0x13, 0xe4, 0xef, 0xfb, + 0x26, 0x47, 0xd7, 0x1a, 0x3b, 0x92, 0x88, 0xce, 0xc5, 0x1c, 0xd8, 0x4e, + 0x26, 0xc9, 0x86, 0x3a, 0x6d, 0x5d, 0x30, 0xba, 0x22, 0xae, 0xd3, 0x3b, + 0x2b, 0x4b, 0x86, 0x91, 0xb5, 0x64, 0xbc, 0xd9, 0x20, 0x4c, 0xd6, 0x57, + 0xdf, 0xbe, 0xc0, 0x31, 0x44, 0x9c, 0x1d, 0x1b, 0x6c, 0xe7, 0x38, 0x9b, + 0x02, 0xbf, 0x21, 0x86, 0x2b, 0x61, 0x9f, 0x09, 0xbb, 0xee, 0x87, 0xfb, + 0x9a, 0xa4, 0xba, 0xfd, 0xce, 0x9a, 0x78, 0xf7, 0x90, 0xb5, 0x17, 0xcb, + 0xdc, 0xaa, 0x0b, 0x22, 0x48, 0x45, 0x47, 0x0d, 0x54, 0xfc, 0xc9, 0x64, + 0x5b, 0x47, 0x6c, 0xc1, 0x5c, 0x6d, 0x50, 0x86, 0x9a, 0xad, 0xb1, 0x40, + 0x50, 0xe3, 0xa4, 0x9f, 0x5d, 0xf5, 0x51, 0xa5, 0x91, 0x2b, 0xe4, 0xb1, + 0x5a, 0x16, 0x10, 0x34, 0x52, 0x77, 0x91, 0x52, 0x38, 0x99, 0xb4, 0xdd, + 0x92, 0x1a, 0x18, 0x9f, 0x3b, 0x8b, 0x9d, 0x0e, 0x46, 0x17, 0x65, 0x9f, + 0xad, 0x3c, 0xf6, 0xba, 0x03, 0x68, 0x63, 0x34, 0xef, 0x38, 0xcf, 0x53, + 0x3a, 0x87, 0x0d, 0x50, 0x63, 0x44, 0x31, 0xf6, 0xe4, 0x26, 0x95, 0x90, + 0x30, 0xf6, 0xf5, 0xcc, 0xc4, 0xc9, 0x07, 0x47, 0xcd, 0x72, 0x01, 0x91, + 0x90, 0x13, 0xb6, 0xdb, 0x64, 0x5f, 0x9f, 0xec, 0x56, 0x2b, 0x91, 0x08, + 0xff, 0x45, 0x98, 0x1b, 0xbc, 0x0e, 0xe1, 0x64, 0x9d, 0x08, 0x1c, 0xe4, + 0x5b, 0x80, 0x55, 0x6b, 0x2e, 0x80, 0x5f, 0xf2, 0x6d, 0x31, 0xbd, 0xb6, + 0xc5, 0x22, 0xf1, 0x5b, 0xc6, 0x3d, 0x02, 0xd9, 0x99, 0x2b, 0x59, 0x2f, + 0x96, 0xa3, 0xd9, 0xe4, 0x59, 0xf4, 0x92, 0xfe, 0xf9, 0xbc, 0xc5, 0x77, + 0x2e, 0x49, 0xe5, 0x2a, 0x0b, 0xab, 0x2c, 0x84, 0xdf, 0x9f, 0xec, 0xf1, + 0x89, 0x78, 0xa0, 0x36, 0xc7, 0x29, 0x42, 0x49, 0x27, 0xe9, 0x75, 0x5a, + 0x16, 0x9a, 0x46, 0x88, 0x17, 0xd6, 0x96, 0xcb, 0xe2, 0xf5, 0xd9, 0xdd, + 0xfb, 0x2c, 0x1a, 0xa5, 0x65, 0xf4, 0xe6, 0xe8, 0x99, 0x14, 0xdc, 0x2b, + 0x96, 0x33, 0x5f, 0x98, 0x15, 0x80, 0xc0, 0xa8, 0xb4, 0xdd, 0x65, 0x98, + 0xbe, 0xe5, 0x68, 0xda, 0xa8, 0x7d, 0x73, 0x9b, 0xac, 0x6a, 0x45, 0xc5, + 0x19, 0x76, 0xac, 0x48, 0xea, 0x76, 0x76, 0x47, 0x72, 0xa8, 0xdb, 0xad, + 0x5e, 0xfb, 0xa6, 0x40, 0x4f, 0xf3, 0xa7, 0x11, 0x14, 0x56, 0xad, 0xab, + 0x96, 0xfc, 0x0f, 0x32, 0xe0, 0x7d, 0x1f, 0x1e, 0x9e, 0x8b, 0x3b, 0x07, + 0xa1, 0x7b, 0x01, 0x86, 0xc4, 0x63, 0xd8, 0xb7, 0x9f, 0x56, 0x4d, 0xab, + 0x52, 0x76, 0xd3, 0x30, 0x8b, 0xfa, 0xa4, 0x5c, 0x5d, 0xaf, 0xab, 0xa5, + 0x18, 0x9d, 0xe0, 0x59, 0x3d, 0xc6, 0xa6, 0x11, 0x9f, 0xe2, 0x8d, 0x20, + 0xf5, 0x59, 0xae, 0x5d, 0x3e, 0x08, 0xe9, 0x98, 0x4b, 0xda, 0x36, 0xd0, + 0x57, 0x97, 0x1e, 0xde, 0xd8, 0x0a, 0x7c, 0xe6, 0x4b, 0x01, 0x34, 0x3f, + 0x58, 0xb0, 0x99, 0x27, 0xda, 0x1d, 0x3c, 0xf4, 0xc2, 0xea, 0x62, 0x0a, + 0x80, 0x8f, 0x32, 0x62, 0x0d, 0x0f, 0x14, 0xc2, 0x31, 0x6a, 0xa3, 0xe1, + 0xb6, 0xc5, 0xbe, 0x36, 0xe5, 0xf0, 0xa4, 0x5c, 0x58, 0xf0, 0x1e, 0xf1, + 0xb2, 0xeb, 0x18, 0xf8, 0xeb, 0x01, 0xe5, 0xa5, 0x74, 0x0e, 0x14, 0xd2, + 0x6c, 0xdd, 0xbc, 0xe5, 0xdb, 0x00, 0xd4, 0xd7, 0xee, 0x61, 0x95, 0xc5, + 0x25, 0xb8, 0x57, 0xc8, 0x2d, 0xf8, 0xba, 0x59, 0x04, 0x8d, 0x9b, 0x71, + 0xa7, 0x17, 0xda, 0xaf, 0xac, 0x40, 0x9f, 0x6f, 0xbe, 0x5e, 0x84, 0xba, + 0xe8, 0x8e, 0x51, 0xfa, 0xa8, 0x66, 0x69, 0xb4, 0x19, 0xc4, 0x5f, 0x58, + 0x1d, 0x5f, 0x0e, 0x75, 0x1a, 0x0c, 0xc2, 0xe3, 0x04, 0x46, 0x7e, 0xc5, + 0xcc, 0xaf, 0x35, 0x97, 0xfb, 0x5c, 0x30, 0x0b, 0xa3, 0x6a, 0x7d, 0x6a, + 0xad, 0x39, 0x15, 0x88, 0xc9, 0xae, 0x99, 0x81, 0x33, 0x91, 0x24, 0xfc, + 0x51, 0xdb, 0xf5, 0x84, 0xde, 0x64, 0x22, 0x41, 0x3c, 0x02, 0xed, 0x84, + 0x2b, 0x52, 0x3f, 0x88, 0x0e, 0xe6, 0xa6, 0x89, 0x47, 0x5a, 0x29, 0x0c, + 0x89, 0x3b, 0x8d, 0xea, 0x2e, 0xb7, 0x49, 0xc3, 0x24, 0xa0, 0x36, 0x81, + 0x60, 0x66, 0x24, 0x57, 0xed, 0xec, 0xef, 0x86, 0x75, 0x81, 0xe6, 0x5a, + 0x3e, 0x02, 0xc5, 0x72, 0x7e, 0xbb, 0xe8, 0xfb, 0x13, 0x95, 0xc4, 0xda, + 0xe8, 0x85, 0x61, 0xb7, 0xb7, 0x5f, 0x9f, 0x9c, 0x1e, 0x6f, 0x45, 0xaf, + 0x13, 0xe0, 0x8a, 0x54, 0x89, 0x02, 0xc7, 0xf7, 0x77, 0xf2, 0x89, 0x91, + 0xbf, 0x2a, 0xa1, 0x6d, 0xf1, 0x23, 0xea, 0xb0, 0x80, 0x34, 0x2d, 0x27, + 0x02, 0x73, 0x90, 0xcc, 0xac, 0x0c, 0x86, 0x4b, 0x43, 0x56, 0x87, 0xb8, + 0x1a, 0x80, 0x7e, 0xb4, 0x14, 0x77, 0x8a, 0xa3, 0xb0, 0x16, 0x8e, 0xc7, + 0xbb, 0x60, 0x32, 0xb2, 0x38, 0x60, 0x1e, 0xbb, 0x5a, 0xe5, 0x2a, 0x75, + 0xd1, 0xd7, 0x15, 0xcd, 0x2b, 0xd2, 0x9f, 0x25, 0x1a, 0x1d, 0xab, 0x36, + 0xcb, 0x26, 0x0e, 0x5f, 0x52, 0x4a, 0xd6, 0xf0, 0x7c, 0x83, 0xb5, 0xfb, + 0x2b, 0xad, 0xdd, 0x5f, 0x97, 0xf3, 0xdb, 0xbe, 0x96, 0x26, 0x54, 0x40, + 0x8f, 0xa2, 0xfd, 0xec, 0x7d, 0xe7, 0x62, 0x50, 0x10, 0x18, 0x2c, 0x86, + 0xce, 0x66, 0x8d, 0xbe, 0x38, 0x80, 0x97, 0xeb, 0x3d, 0x56, 0xe0, 0x27, + 0x14, 0x1e, 0x38, 0x72, 0x94, 0x26, 0x37, 0xe6, 0xb0, 0x64, 0xd6, 0x11, + 0x3b, 0x56, 0x2c, 0x51, 0x9b, 0xee, 0x0c, 0x3c, 0xb6, 0x62, 0x03, 0xb2, + 0xb6, 0xd0, 0xb4, 0xb3, 0x1b, 0xab, 0x71, 0x07, 0x01, 0x56, 0x63, 0x4b, + 0x48, 0x14, 0x48, 0xd9, 0x28, 0x46, 0xd7, 0xbc, 0xab, 0xc0, 0x28, 0xc1, + 0x89, 0x8c, 0x20, 0xcb, 0xa4, 0x54, 0xbb, 0x66, 0x25, 0x21, 0x30, 0x32, + 0xe4, 0xef, 0xc2, 0xe3, 0xfd, 0xd8, 0x00, 0xa3, 0xda, 0xe0, 0x44, 0xa0, + 0x67, 0xd9, 0xa0, 0xdb, 0x20, 0x9c, 0xf1, 0x34, 0x93, 0xaa, 0x47, 0xf7, + 0xa1, 0x5b, 0xf3, 0x3f, 0x71, 0xdf, 0xf3, 0x65, 0xa6, 0x94, 0xd8, 0x6f, + 0x89, 0x90, 0x0f, 0x21, 0x53, 0x0d, 0x63, 0x0d, 0x59, 0x47, 0x10, 0x23, + 0xce, 0x7c, 0x13, 0xf3, 0xa0, 0xe4, 0xb7, 0xaa, 0x18, 0x6b, 0x8b, 0x0d, + 0xf5, 0x83, 0x6a, 0x1e, 0x8e, 0x53, 0x1f, 0x11, 0x59, 0x65, 0x45, 0x2a, + 0xdb, 0xe2, 0x8c, 0x82, 0xa1, 0xde, 0xdc, 0x8c, 0x10, 0x37, 0x70, 0x03, + 0x97, 0x1c, 0xef, 0x42, 0xaf, 0x4c, 0xfb, 0x0c, 0xe6, 0x7b, 0x0b, 0xbe, + 0x5e, 0xb4, 0xc5, 0x8d, 0x69, 0x3a, 0x55, 0x30, 0xc9, 0xc0, 0xc8, 0xa9, + 0x62, 0xbe, 0x85, 0xed, 0x18, 0xbc, 0x2b, 0x89, 0xa5, 0xd6, 0x5a, 0xa7, + 0x19, 0x34, 0x12, 0x22, 0x0d, 0x88, 0xe9, 0xcc, 0x03, 0x3a, 0x1d, 0x10, + 0x6d, 0x35, 0x1e, 0xe1, 0xbc, 0x0d, 0x89, 0x5c, 0x4f, 0x5a, 0xea, 0x74, + 0x33, 0x0c, 0x37, 0x6d, 0x91, 0x05, 0x36, 0xb8, 0x72, 0x80, 0x2d, 0x89, + 0x79, 0x9a, 0x67, 0x29, 0xeb, 0x16, 0xb3, 0xfb, 0xac, 0x4e, 0xab, 0x2b, + 0x17, 0x10, 0xea, 0x02, 0x65, 0xc5, 0x17, 0xa2, 0x05, 0x81, 0xfc, 0xa8, + 0x02, 0x5c, 0xfe, 0xb5, 0x93, 0x45, 0x65, 0x1a, 0x8b, 0x37, 0x0c, 0xd7, + 0xb8, 0x19, 0x6e, 0x18, 0x88, 0xa2, 0x91, 0x2f, 0xf0, 0x46, 0xfc, 0x00, + 0x90, 0x0d, 0x08, 0x40, 0x93, 0xca, 0x25, 0xea, 0x14, 0x85, 0x53, 0x5e, + 0xcc, 0xb5, 0x92, 0xdf, 0x03, 0x2b, 0xed, 0x9a, 0x32, 0x70, 0x48, 0xbe, + 0xbc, 0x89, 0x1f, 0x1e, 0x06, 0x45, 0x22, 0x75, 0xd1, 0x8a, 0x62, 0x8a, + 0x44, 0xcf, 0x6a, 0xfd, 0x37, 0x4e, 0xf3, 0x4f, 0x16, 0xf1, 0x14, 0xd1, + 0x8e, 0xcc, 0x8f, 0xd6, 0xd5, 0xd9, 0xaa, 0x46, 0x2b, 0x48, 0x05, 0x40, + 0x29, 0x97, 0x9e, 0x4a, 0x7d, 0x98, 0x40, 0x8e, 0x63, 0x60, 0xa8, 0x42, + 0x58, 0x11, 0x87, 0x60, 0x45, 0xe9, 0xa4, 0xe1, 0x74, 0xd2, 0xd0, 0x2e, + 0x76, 0xff, 0xf0, 0xce, 0xb9, 0x41, 0xb0, 0xb6, 0x31, 0x52, 0x3b, 0x34, + 0x22, 0x4b, 0xb8, 0x75, 0xf3, 0x8e, 0x31, 0xda, 0x00, 0xa9, 0x5b, 0x93, + 0x65, 0x43, 0xdb, 0xad, 0xbf, 0x6f, 0x45, 0x76, 0x83, 0xdc, 0x0b, 0xf0, + 0x1e, 0x7e, 0x22, 0x73, 0x77, 0x3a, 0x20, 0x79, 0x51, 0xbd, 0xb1, 0x71, + 0x19, 0x5c, 0x09, 0x0a, 0x87, 0x4c, 0xf1, 0xf2, 0xf0, 0xfc, 0xfd, 0x37, + 0xc7, 0xc7, 0xe7, 0x27, 0x47, 0xc4, 0xfb, 0x45, 0xa6, 0x74, 0x1f, 0xbd, + 0xbd, 0xfc, 0xf6, 0xd4, 0x80, 0x39, 0x6c, 0x7d, 0x1a, 0xdc, 0x9a, 0x0d, + 0xbf, 0x68, 0xee, 0x34, 0x9d, 0x2f, 0x1f, 0x7a, 0x28, 0x2f, 0x45, 0x8a, + 0xc6, 0xc1, 0xc9, 0xf7, 0xbd, 0xe8, 0xeb, 0xf3, 0xfe, 0xbb, 0xef, 0x1b, + 0xc9, 0x53, 0x95, 0xa0, 0xbc, 0xfa, 0x39, 0x77, 0x21, 0x7a, 0x40, 0x0c, + 0xf3, 0x73, 0x37, 0x12, 0x6b, 0x01, 0x57, 0xfe, 0xb8, 0xcb, 0xbe, 0x6a, + 0xbb, 0x0f, 0x6f, 0x7b, 0x67, 0x5c, 0x92, 0xbd, 0x6f, 0xb9, 0xed, 0xe2, + 0x19, 0x27, 0x1a, 0x0d, 0x42, 0xc2, 0x5a, 0x45, 0x2f, 0xe9, 0x9f, 0xb6, + 0x6c, 0xcd, 0x6d, 0x2e, 0x52, 0x1f, 0x9d, 0x07, 0xd0, 0x15, 0xce, 0x81, + 0x35, 0xb0, 0xb8, 0x25, 0xb5, 0x24, 0x68, 0xfa, 0x91, 0x3a, 0x09, 0xf3, + 0x06, 0x38, 0xa5, 0x6b, 0xc1, 0x17, 0xf5, 0x85, 0x79, 0x2f, 0x69, 0x77, + 0x3e, 0xfe, 0x8a, 0x69, 0xaa, 0xd4, 0xe9, 0x07, 0x01, 0x11, 0x1a, 0x53, + 0xe4, 0x47, 0x07, 0x0e, 0x10, 0x46, 0x65, 0x16, 0x6e, 0x04, 0xf3, 0x53, + 0xd4, 0x8d, 0x16, 0x1c, 0x76, 0x01, 0x4c, 0x70, 0xc8, 0x1e, 0x68, 0x90, + 0x46, 0x3f, 0x60, 0x74, 0x84, 0x9e, 0xe0, 0x24, 0x84, 0x18, 0x09, 0x0e, + 0x07, 0x48, 0xab, 0x93, 0x95, 0xad, 0xc6, 0x2b, 0x00, 0x99, 0xfc, 0xfb, + 0xb0, 0x11, 0x6e, 0xf3, 0x51, 0xf4, 0x12, 0x01, 0x7f, 0xed, 0x81, 0xd4, + 0x5a, 0x37, 0xf6, 0x9b, 0x24, 0x1f, 0x25, 0x79, 0x56, 0xd4, 0x73, 0xe8, + 0x34, 0xe7, 0x5e, 0xeb, 0x73, 0x72, 0x33, 0x0a, 0xed, 0xdf, 0x30, 0xbc, + 0x42, 0x08, 0x4f, 0xc4, 0x83, 0xdd, 0xc8, 0x16, 0xea, 0x22, 0x76, 0xae, + 0xdb, 0x8b, 0xba, 0x9c, 0x29, 0xc8, 0x3f, 0x89, 0x75, 0x5d, 0xc1, 0x37, + 0x92, 0xc6, 0xd3, 0x6e, 0xaf, 0x09, 0x8f, 0xd8, 0xd5, 0x55, 0xef, 0xd2, + 0xc6, 0x49, 0x6b, 0x56, 0x48, 0x35, 0xd6, 0x71, 0x08, 0xa2, 0x4b, 0x5a, + 0x28, 0xe8, 0x62, 0x68, 0xa1, 0x2b, 0x1a, 0x58, 0x56, 0xae, 0xb9, 0x6a, + 0xaa, 0xd6, 0xba, 0xda, 0x2c, 0x55, 0xce, 0xab, 0xa1, 0x91, 0xd0, 0xf6, + 0x2d, 0x9d, 0x5d, 0x12, 0xde, 0xa1, 0x3d, 0xdf, 0xea, 0xda, 0x3d, 0x65, + 0x59, 0xf5, 0xab, 0xe1, 0xf0, 0xe0, 0xfc, 0xa4, 0xbe, 0xd4, 0xf4, 0x69, + 0xff, 0xad, 0xd5, 0x88, 0xdf, 0x32, 0x4a, 0xf1, 0xba, 0x29, 0xcf, 0x00, + 0x99, 0x47, 0x2c, 0x5d, 0x73, 0xa8, 0x88, 0x40, 0x51, 0x7d, 0x4b, 0x97, + 0xd9, 0x9a, 0x08, 0x47, 0x05, 0x1f, 0x52, 0x13, 0x67, 0x1e, 0x55, 0x6a, + 0x4f, 0x92, 0x20, 0xf9, 0x1b, 0xd2, 0xd4, 0x37, 0x52, 0xcf, 0xec, 0x2a, + 0xbd, 0xe6, 0x20, 0x7d, 0xfc, 0x6c, 0xc3, 0x61, 0x72, 0x00, 0x4c, 0x5a, + 0x02, 0xd6, 0x3f, 0xe9, 0x25, 0x66, 0x60, 0x9e, 0x69, 0x8e, 0x99, 0x08, + 0xce, 0x03, 0xab, 0x29, 0xd1, 0x40, 0x89, 0xb2, 0x97, 0xd3, 0x20, 0x64, + 0x62, 0x9a, 0xf8, 0x88, 0x1c, 0x53, 0x4c, 0x70, 0x97, 0xfb, 0x46, 0xc5, + 0x6f, 0xdc, 0x20, 0x57, 0xab, 0x83, 0xa7, 0x2f, 0x8b, 0x1d, 0x3d, 0x9c, + 0xb0, 0x8a, 0xcc, 0x62, 0xeb, 0x62, 0xa7, 0xbf, 0xbd, 0x91, 0xb5, 0x81, + 0x0d, 0x90, 0x0c, 0xc8, 0x70, 0xcd, 0xe1, 0x18, 0x06, 0xd1, 0xd9, 0x22, + 0x90, 0xbe, 0x6e, 0x92, 0x34, 0xf7, 0x0e, 0x51, 0x9f, 0xcf, 0x0e, 0xae, + 0xd0, 0x9c, 0x2c, 0x33, 0x9e, 0xac, 0x5a, 0x90, 0x47, 0x57, 0x50, 0xa6, + 0x2d, 0xe5, 0x53, 0x8c, 0xef, 0xc2, 0x73, 0x46, 0x33, 0x29, 0x93, 0x62, + 0x41, 0x7a, 0x68, 0xa3, 0xfa, 0xa7, 0x18, 0x38, 0x81, 0x7c, 0xc0, 0xb0, + 0xd2, 0x05, 0x82, 0x70, 0x22, 0x60, 0xf1, 0xaf, 0x2a, 0x6e, 0x17, 0x78, + 0x3c, 0xe9, 0x14, 0x6d, 0x2a, 0x7e, 0x61, 0x6b, 0x81, 0x42, 0xf1, 0x19, + 0xf0, 0x61, 0x0f, 0x50, 0xfd, 0xad, 0xbc, 0x9c, 0x6f, 0xdf, 0xc3, 0xf0, + 0x78, 0x3f, 0x70, 0xda, 0x92, 0x35, 0xed, 0x20, 0x53, 0x82, 0x09, 0x38, + 0xd8, 0x2e, 0xe7, 0x40, 0x36, 0xb6, 0x03, 0x20, 0x74, 0x51, 0x27, 0x14, + 0xfb, 0xa1, 0x81, 0x05, 0x95, 0x01, 0x64, 0xe5, 0x3b, 0x01, 0x86, 0x98, + 0x64, 0x4b, 0x66, 0x70, 0xf2, 0x69, 0xdd, 0x81, 0x93, 0x48, 0x69, 0xc7, + 0x82, 0x9d, 0x42, 0xec, 0xc5, 0x69, 0x29, 0x3e, 0xe1, 0xa0, 0x19, 0xf6, + 0xa3, 0xbf, 0xfc, 0xa5, 0x17, 0xfd, 0xa5, 0x43, 0xff, 0x95, 0xf4, 0x1f, + 0xad, 0xe7, 0x5f, 0xa4, 0x96, 0xc1, 0x5f, 0xee, 0xe8, 0xfe, 0x8c, 0xb8, + 0x24, 0x61, 0x31, 0x65, 0x10, 0x01, 0x8f, 0x53, 0xdf, 0x02, 0xad, 0x21, + 0x21, 0x86, 0x5a, 0x9f, 0x83, 0x0f, 0x3f, 0x2c, 0x58, 0x13, 0xb7, 0x54, + 0x92, 0x5a, 0x43, 0x1b, 0xb6, 0x9c, 0xcd, 0x25, 0x8e, 0x41, 0xb7, 0x1d, + 0x64, 0xdd, 0xd0, 0x22, 0xe3, 0xa8, 0xfb, 0x89, 0x79, 0xcd, 0x4b, 0x4b, + 0x6d, 0x0d, 0x83, 0x34, 0xf1, 0x9a, 0xd1, 0x75, 0xa9, 0x75, 0x20, 0x25, + 0x4e, 0xa9, 0x2d, 0x5e, 0x53, 0xd4, 0xf0, 0xb3, 0x39, 0x6c, 0xf5, 0x80, + 0x08, 0x55, 0xc6, 0xaa, 0xac, 0x90, 0xad, 0xd2, 0x8b, 0x9b, 0x15, 0x74, + 0x4d, 0x1d, 0x92, 0xab, 0xe5, 0x4c, 0xa3, 0x6c, 0x29, 0x2b, 0xd2, 0x14, + 0xbe, 0xad, 0x70, 0xa9, 0xaa, 0xeb, 0x56, 0x21, 0x33, 0xe4, 0x2b, 0x34, + 0xc0, 0x6e, 0xbf, 0x5b, 0xc5, 0x46, 0xb4, 0x30, 0x9e, 0xb6, 0x3a, 0x37, + 0x41, 0x51, 0x9a, 0x46, 0x6d, 0x4c, 0xd8, 0x4a, 0x15, 0xfe, 0x4b, 0x40, + 0xf6, 0x05, 0x68, 0x23, 0xf3, 0xde, 0x24, 0x78, 0x09, 0x2b, 0x13, 0x51, + 0xbd, 0x9d, 0x58, 0x6b, 0xa3, 0x16, 0x89, 0x02, 0xbf, 0xe9, 0xbb, 0x69, + 0x19, 0x28, 0x42, 0xfd, 0xbe, 0x54, 0xce, 0x54, 0x3c, 0x68, 0x48, 0xad, + 0xb8, 0x9c, 0x58, 0xe3, 0x29, 0xd2, 0xd9, 0xa2, 0x61, 0x79, 0xe4, 0x35, + 0xf6, 0x42, 0x2f, 0x0f, 0x03, 0x38, 0xf8, 0x5c, 0x4d, 0xe7, 0x7e, 0xae, + 0x6c, 0x64, 0x98, 0x01, 0x45, 0x40, 0x8c, 0x53, 0x00, 0x95, 0xf1, 0x71, + 0x3b, 0x2d, 0x5e, 0xfb, 0x86, 0x99, 0x8a, 0xc7, 0xf4, 0x2a, 0xea, 0xac, + 0xd5, 0x52, 0x3a, 0xf5, 0x17, 0x4e, 0x19, 0xf6, 0x45, 0x77, 0x5c, 0xb0, + 0xfe, 0xc6, 0x30, 0xca, 0x09, 0x3e, 0xdb, 0x14, 0x88, 0x24, 0x5a, 0xbb, + 0xd0, 0x25, 0x45, 0x86, 0xcc, 0x69, 0x8d, 0x2f, 0x46, 0x9c, 0x58, 0x02, + 0x1d, 0xa9, 0xa7, 0x92, 0x2b, 0xa1, 0xae, 0x83, 0x3d, 0x35, 0x1b, 0x0b, + 0xe7, 0xf0, 0xdf, 0x2a, 0xfa, 0x9b, 0xda, 0x20, 0x36, 0x4d, 0xdb, 0xfb, + 0x9b, 0xdd, 0x63, 0x5b, 0x6a, 0x25, 0x97, 0xbc, 0xd4, 0x35, 0xd0, 0x2d, + 0xe1, 0x15, 0xe4, 0xc0, 0x84, 0x52, 0x48, 0xf5, 0xf4, 0xde, 0x72, 0x3e, + 0x71, 0x61, 0x82, 0x86, 0xf5, 0xb2, 0x96, 0xaa, 0xa1, 0xe8, 0x70, 0x8f, + 0x0a, 0x3a, 0xa7, 0xc4, 0xe3, 0x39, 0x0b, 0x7c, 0x0e, 0x85, 0x13, 0x90, + 0xb3, 0x9c, 0x94, 0xd8, 0xc6, 0xce, 0xec, 0x6e, 0xb9, 0x38, 0x50, 0xd4, + 0xf5, 0x93, 0x42, 0x8f, 0xaa, 0x86, 0x75, 0x6e, 0x32, 0x81, 0xfb, 0xe9, + 0xec, 0xb3, 0x66, 0xa5, 0x8c, 0xc1, 0xcf, 0xb2, 0x79, 0x14, 0x00, 0xa6, + 0xf4, 0xf5, 0xd9, 0x9b, 0x63, 0x97, 0xf1, 0x2a, 0xa6, 0x3e, 0xfe, 0xa4, + 0x15, 0xe2, 0x71, 0x80, 0x7c, 0x02, 0x43, 0x80, 0xe8, 0x35, 0x6b, 0x74, + 0xca, 0x12, 0x5d, 0x27, 0xe5, 0xe2, 0x7e, 0x99, 0x4e, 0x36, 0x01, 0xd2, + 0xf1, 0xee, 0xed, 0xc9, 0xf7, 0x7d, 0xb1, 0x14, 0x8b, 0x22, 0x67, 0x38, + 0x15, 0x86, 0x72, 0x21, 0xde, 0x84, 0x59, 0x0b, 0x26, 0x8b, 0x52, 0x0d, + 0x8e, 0x99, 0xa2, 0x12, 0x21, 0xd7, 0x2f, 0x9d, 0x8b, 0x10, 0x23, 0x0d, + 0xd2, 0xbd, 0x71, 0x36, 0x27, 0xf6, 0x0d, 0xac, 0x25, 0x01, 0xd0, 0x68, + 0xc9, 0xde, 0xad, 0xae, 0x44, 0x74, 0x70, 0x7e, 0x7e, 0x74, 0x70, 0x79, + 0xe0, 0xe6, 0x06, 0x70, 0x23, 0xf0, 0x39, 0x88, 0x33, 0xac, 0xd8, 0x6b, + 0xa5, 0xa4, 0xee, 0xef, 0x39, 0x43, 0xb0, 0xce, 0xf9, 0xce, 0x2f, 0xce, + 0xd8, 0xcc, 0xf8, 0xfb, 0xbf, 0x1c, 0xf8, 0x0a, 0x71, 0x28, 0x85, 0xd4, + 0x2c, 0xd4, 0xb5, 0xb7, 0xc5, 0xe3, 0xbb, 0x77, 0xe3, 0xd3, 0x38, 0x21, + 0x91, 0xe3, 0xa2, 0xf7, 0xbc, 0xa1, 0xf9, 0xd8, 0x09, 0x27, 0xb6, 0x1a, + 0x58, 0x80, 0x5e, 0x4b, 0x6e, 0x59, 0x30, 0x91, 0xcc, 0xf3, 0x53, 0xc3, + 0x7a, 0xb2, 0xc5, 0x9a, 0x46, 0xc9, 0x43, 0x32, 0x5e, 0x96, 0xe0, 0x5d, + 0xec, 0xcd, 0x60, 0xfa, 0x9a, 0xf0, 0x4a, 0xd5, 0x1d, 0xf5, 0xf5, 0xed, + 0xf1, 0xb0, 0x89, 0xc2, 0x81, 0x24, 0xa5, 0x33, 0x93, 0xaa, 0x18, 0x03, + 0x1d, 0xad, 0xaf, 0x8b, 0xd1, 0x38, 0x3b, 0x02, 0xa4, 0x48, 0x74, 0x6e, + 0xf4, 0xd8, 0x58, 0x90, 0x4f, 0x88, 0xf1, 0xf5, 0x2d, 0xc4, 0x54, 0x26, + 0x4e, 0x1f, 0x34, 0x1e, 0x2a, 0x5d, 0x8d, 0x07, 0x16, 0x93, 0x9a, 0xde, + 0x4f, 0xe5, 0x53, 0x21, 0x83, 0xaa, 0x9b, 0x7a, 0x14, 0x32, 0x46, 0x9f, + 0x02, 0x54, 0x31, 0xa2, 0x10, 0x9b, 0xfe, 0x1c, 0x73, 0x2c, 0xd2, 0xa3, + 0x24, 0x15, 0x93, 0x88, 0xcb, 0x7f, 0x6d, 0xef, 0x0e, 0x76, 0x3a, 0xcd, + 0xd1, 0x23, 0xf1, 0x0c, 0x96, 0xf1, 0x78, 0x2e, 0xf7, 0xb3, 0x00, 0xf3, + 0x66, 0x1f, 0x1e, 0xa0, 0x70, 0x50, 0x92, 0xf9, 0x10, 0xb7, 0xd0, 0x36, + 0x96, 0xfe, 0x59, 0xc3, 0x3b, 0x24, 0x1e, 0x4e, 0xcf, 0x92, 0xe7, 0x19, + 0xc2, 0x4a, 0x63, 0x36, 0x96, 0xc1, 0x4f, 0xd0, 0x69, 0x5f, 0xe0, 0xf9, + 0x44, 0xa2, 0x1d, 0x6a, 0xeb, 0xfc, 0xa8, 0xee, 0xb2, 0x3e, 0x4c, 0xd0, + 0xd1, 0x80, 0xfb, 0x78, 0x2d, 0xb7, 0xab, 0xb8, 0x45, 0xad, 0xd0, 0x7d, + 0x2b, 0xf8, 0xea, 0x81, 0xe0, 0x1f, 0x87, 0x9a, 0x06, 0xe7, 0xc1, 0x71, + 0xf5, 0x40, 0x8e, 0xaa, 0x62, 0xcd, 0x49, 0xf3, 0x37, 0x67, 0x95, 0x32, + 0x80, 0xf8, 0xbd, 0x79, 0xdb, 0x56, 0xca, 0x46, 0x47, 0xda, 0x73, 0x5f, + 0x2e, 0x5c, 0xb5, 0xd4, 0xa1, 0x0a, 0x4b, 0x50, 0x22, 0xdb, 0x79, 0x01, + 0xd6, 0xc0, 0x83, 0x98, 0x94, 0x4a, 0xea, 0xe0, 0x54, 0xe0, 0x54, 0x24, + 0xa0, 0x56, 0xb4, 0x28, 0x19, 0x96, 0x78, 0xdc, 0xbd, 0x17, 0x8a, 0xdf, + 0xfb, 0x5d, 0x5b, 0xd1, 0xed, 0x7d, 0xc5, 0x67, 0xc9, 0x12, 0xd1, 0xe1, + 0xc4, 0x6f, 0xcf, 0x21, 0x11, 0x9a, 0xa8, 0xd4, 0x7f, 0xed, 0xcc, 0x6a, + 0x66, 0x77, 0x63, 0x1d, 0x95, 0x96, 0xbc, 0x09, 0x12, 0x2a, 0x40, 0x16, + 0x6c, 0xd9, 0x45, 0x69, 0xb0, 0x1e, 0x9b, 0xb8, 0x84, 0x1d, 0x64, 0x0c, + 0xb1, 0x10, 0x1b, 0xf4, 0x9d, 0x1e, 0x02, 0xea, 0xeb, 0x9a, 0xa4, 0xe3, + 0x35, 0x21, 0xd5, 0x06, 0x32, 0xe2, 0xeb, 0xeb, 0xb2, 0x77, 0xa0, 0xb0, + 0xcc, 0xda, 0xf7, 0xc0, 0xcf, 0x9a, 0x4c, 0x36, 0x9f, 0x6c, 0x89, 0x11, + 0xc3, 0x55, 0xce, 0x86, 0xe3, 0xee, 0x5f, 0x54, 0x1e, 0x55, 0x38, 0xf0, + 0x25, 0x08, 0xdb, 0xb6, 0xd5, 0x45, 0x96, 0x3d, 0x96, 0x67, 0x33, 0x25, + 0x49, 0xa7, 0xec, 0xc3, 0xb4, 0xf4, 0x92, 0x44, 0xae, 0x64, 0xb2, 0x56, + 0xcb, 0x14, 0x68, 0x86, 0xf8, 0x21, 0x9d, 0x2d, 0x67, 0xde, 0xf3, 0xcc, + 0xb8, 0xbc, 0x65, 0xd2, 0xac, 0x70, 0xa8, 0x36, 0x8d, 0x86, 0x3c, 0xad, + 0x7e, 0x2f, 0x9d, 0x21, 0x90, 0x89, 0x25, 0x86, 0x08, 0x5e, 0x15, 0x56, + 0xff, 0x69, 0x3c, 0x9c, 0xc5, 0x9f, 0x2e, 0x44, 0x86, 0xe0, 0xb8, 0x95, + 0x89, 0x38, 0x4e, 0x99, 0x82, 0xea, 0x9b, 0x6a, 0xc3, 0x40, 0x05, 0x03, + 0x71, 0x4a, 0x48, 0x30, 0xd0, 0xbc, 0xe4, 0x54, 0xb9, 0x11, 0x35, 0x71, + 0x9f, 0x4e, 0xca, 0x9b, 0x76, 0xbc, 0x41, 0x59, 0x47, 0xcc, 0x3b, 0x12, + 0x84, 0x12, 0x0e, 0x2f, 0xc1, 0x52, 0xc1, 0x67, 0xbc, 0x2d, 0x86, 0x63, + 0x97, 0x6d, 0x1f, 0x13, 0xdd, 0x5d, 0x71, 0x7a, 0x44, 0x53, 0x4f, 0xd0, + 0xb0, 0xb8, 0x81, 0x1d, 0x51, 0x04, 0xde, 0xde, 0x76, 0xf9, 0x96, 0xec, + 0x7e, 0xa3, 0x56, 0x11, 0x81, 0x2d, 0x42, 0x2c, 0xb5, 0x56, 0x07, 0xe7, + 0x88, 0x98, 0xdb, 0x74, 0xda, 0x2c, 0x90, 0xb8, 0x82, 0x32, 0x15, 0x75, + 0x67, 0x12, 0xc6, 0xfa, 0xa6, 0xab, 0x06, 0x7c, 0x14, 0x42, 0x56, 0x8f, + 0x76, 0x4f, 0x52, 0x1f, 0xa2, 0xee, 0xb5, 0x74, 0xf3, 0x95, 0x7f, 0xa8, + 0xd6, 0x9c, 0x77, 0x82, 0xdb, 0x2d, 0x52, 0xec, 0x47, 0x7b, 0x3b, 0x3b, + 0xdf, 0xf4, 0xa2, 0x27, 0x52, 0x3a, 0x76, 0xf7, 0xab, 0xd6, 0x15, 0x92, + 0x05, 0xc2, 0x16, 0xab, 0xfe, 0x19, 0xdf, 0x81, 0xd7, 0xeb, 0xa2, 0x61, + 0x46, 0xac, 0x29, 0x4e, 0x96, 0x81, 0x6d, 0x59, 0x16, 0x7f, 0xcd, 0x56, + 0xc1, 0x8c, 0x5d, 0x87, 0x42, 0x98, 0x21, 0x6e, 0x88, 0x77, 0xef, 0x86, + 0x7e, 0x63, 0xef, 0xbd, 0x6d, 0x2c, 0xfa, 0x69, 0xc9, 0x67, 0x2f, 0x6e, + 0xf8, 0xf8, 0x8f, 0x96, 0x39, 0x4e, 0x32, 0x3b, 0x42, 0xa5, 0x1c, 0x11, + 0xdb, 0xd6, 0xa1, 0x33, 0x48, 0x2d, 0x69, 0x5f, 0x3a, 0xb5, 0xac, 0x4c, + 0x67, 0xd0, 0x5e, 0xef, 0x11, 0xf1, 0x33, 0xae, 0x20, 0xec, 0x0f, 0xa4, + 0x30, 0xa1, 0x7f, 0x39, 0x26, 0x5e, 0xf1, 0x10, 0x6d, 0x27, 0xf4, 0x30, + 0xd6, 0x27, 0xcb, 0x5a, 0x95, 0xe8, 0xa9, 0x30, 0x30, 0xc3, 0x14, 0x8e, + 0x39, 0x32, 0x7e, 0xda, 0x42, 0xcb, 0xf4, 0xf0, 0x40, 0xa4, 0x69, 0xf0, + 0xdb, 0x29, 0x3f, 0x30, 0x5d, 0xf5, 0x9a, 0x6a, 0x07, 0x87, 0x05, 0xc2, + 0x1f, 0x60, 0x8a, 0x50, 0x38, 0x2a, 0x4e, 0x9f, 0x1d, 0xa3, 0x44, 0x0d, + 0x47, 0x76, 0xfd, 0x76, 0x66, 0xa9, 0x29, 0xe3, 0xf1, 0xa7, 0x45, 0xd9, + 0x67, 0xf7, 0xee, 0x7a, 0xd4, 0x2e, 0xcd, 0x29, 0x37, 0xf4, 0xae, 0x89, + 0x47, 0xc3, 0x14, 0x4b, 0xb6, 0x94, 0xde, 0x40, 0x14, 0x25, 0xb4, 0x64, + 0x66, 0x5f, 0xfd, 0x46, 0xa0, 0x1f, 0xeb, 0xc7, 0x77, 0x69, 0x72, 0xcf, + 0x69, 0xd9, 0xc7, 0x1e, 0x94, 0xac, 0xca, 0x33, 0xac, 0xfa, 0xc5, 0x2c, + 0x1e, 0xdf, 0xd0, 0x85, 0xd2, 0x47, 0xdc, 0x75, 0x8b, 0x8c, 0x15, 0x56, + 0x50, 0xad, 0x0f, 0x8b, 0xc1, 0x70, 0x5c, 0x1a, 0x96, 0xe1, 0xd2, 0x05, + 0x48, 0x8a, 0x3c, 0x88, 0x35, 0x20, 0x58, 0x62, 0x2c, 0x75, 0x38, 0x57, + 0xd0, 0x1c, 0xb3, 0xdc, 0xa0, 0x64, 0x3f, 0x24, 0x36, 0x48, 0x96, 0x9a, + 0xa1, 0x71, 0xbd, 0x3d, 0x1d, 0x7a, 0x8c, 0x80, 0x52, 0x2b, 0x29, 0xc0, + 0x56, 0x30, 0x64, 0xa9, 0xf0, 0xf5, 0x9a, 0xaa, 0xd2, 0x85, 0x00, 0xe6, + 0x4b, 0x7c, 0x10, 0xa2, 0x5f, 0x44, 0xbc, 0x4d, 0xf3, 0x0a, 0xd6, 0x03, + 0xb7, 0xfe, 0x67, 0x0d, 0xd0, 0x9e, 0x48, 0x15, 0x9d, 0xf6, 0x48, 0x15, + 0xce, 0xa8, 0x0b, 0x0b, 0xa1, 0xc3, 0xd8, 0x8c, 0x24, 0x2f, 0x22, 0x31, + 0xba, 0xb4, 0x6f, 0xab, 0x92, 0x0a, 0xe7, 0x68, 0x08, 0x32, 0xcc, 0x4b, + 0xe2, 0x68, 0x9f, 0xff, 0xd8, 0xa7, 0x7f, 0x7f, 0x6a, 0xf8, 0x02, 0x4b, + 0xc1, 0x93, 0x51, 0x93, 0x96, 0x85, 0x95, 0xe6, 0x1e, 0x1e, 0x5f, 0x2a, + 0xd3, 0xa3, 0x1d, 0xf9, 0xb6, 0x08, 0x0a, 0x0b, 0xb4, 0x86, 0x48, 0x98, + 0x5b, 0x6e, 0xb3, 0x60, 0x28, 0xa0, 0x00, 0x80, 0x5c, 0xa2, 0x86, 0xac, + 0x15, 0xd8, 0x05, 0xe6, 0x72, 0xe3, 0x48, 0xe9, 0x8e, 0xba, 0xea, 0xca, + 0xae, 0xf6, 0x71, 0xe2, 0xfd, 0x92, 0xbe, 0xbe, 0xe3, 0x88, 0x01, 0x62, + 0x8a, 0x15, 0x43, 0x3d, 0x89, 0x38, 0x57, 0x64, 0x2e, 0xa1, 0x05, 0x94, + 0x8c, 0xe1, 0x37, 0x1d, 0xb9, 0x8c, 0x46, 0x24, 0xd1, 0x19, 0x24, 0xe0, + 0x52, 0xe7, 0x79, 0x9e, 0xdd, 0xdb, 0xd9, 0xd7, 0xb0, 0xe4, 0x40, 0x66, + 0xf0, 0x0e, 0x46, 0x6a, 0x7b, 0xb9, 0x68, 0xf1, 0xbc, 0x72, 0xaa, 0x42, + 0x03, 0x48, 0x24, 0xcc, 0xc4, 0x0c, 0xeb, 0x64, 0xb4, 0x86, 0xa7, 0x00, + 0x49, 0x7e, 0xcb, 0xa3, 0xa8, 0xba, 0xd2, 0x26, 0x62, 0xcb, 0x76, 0xe9, + 0x15, 0x1a, 0xba, 0x0d, 0x0c, 0x1d, 0x8e, 0x45, 0x6e, 0x94, 0x1e, 0x97, + 0xd4, 0x6a, 0xe0, 0x2e, 0x58, 0xdc, 0x75, 0x19, 0xb9, 0x12, 0x1d, 0x9b, + 0xec, 0xc9, 0x1c, 0xc3, 0xfe, 0xa5, 0x01, 0xe1, 0xf5, 0x32, 0x19, 0x6d, + 0xb8, 0x04, 0xc4, 0x01, 0x9e, 0x7c, 0xff, 0x7d, 0x00, 0x4d, 0xc2, 0xf2, + 0xe6, 0x56, 0xaf, 0xc2, 0xb4, 0x6a, 0x15, 0x23, 0x89, 0x8a, 0xb2, 0x96, + 0x53, 0x6e, 0x61, 0xf6, 0x1a, 0x8a, 0xca, 0x91, 0x18, 0x50, 0xe2, 0x06, + 0x2e, 0x04, 0xde, 0x0a, 0x5c, 0x6b, 0xf0, 0x7b, 0x10, 0x06, 0xd6, 0x52, + 0x3f, 0xca, 0x85, 0xfc, 0xf4, 0x7c, 0xec, 0xad, 0x44, 0x9e, 0x20, 0x3c, + 0x2d, 0x5c, 0xaa, 0xc2, 0x51, 0x0c, 0xdd, 0x4a, 0xf7, 0xf3, 0x41, 0x5b, + 0x65, 0x93, 0x26, 0x76, 0xa2, 0x64, 0x31, 0x60, 0x46, 0x38, 0xbf, 0x52, + 0x8d, 0x87, 0x4d, 0x53, 0xe3, 0x3c, 0x51, 0xcf, 0x4d, 0xe1, 0x4a, 0xcb, + 0x37, 0xce, 0xab, 0xd8, 0x79, 0x10, 0x69, 0x25, 0x60, 0xe1, 0x1c, 0xae, + 0x2b, 0x67, 0x17, 0xd7, 0x8f, 0x8f, 0x67, 0x08, 0x77, 0x8b, 0x1f, 0xef, + 0x35, 0x05, 0x84, 0x7b, 0x94, 0x1f, 0x09, 0x4c, 0x77, 0x08, 0xb9, 0xd2, + 0xcc, 0x24, 0xc1, 0xbc, 0xf9, 0x53, 0xb5, 0xc8, 0x9e, 0xe6, 0xcd, 0x09, + 0xe9, 0xb5, 0x55, 0x12, 0xec, 0x97, 0xf9, 0x12, 0x2b, 0xc4, 0x1b, 0xc2, + 0x20, 0x6e, 0x2c, 0x19, 0x5b, 0x36, 0x19, 0x3b, 0xf9, 0x2c, 0xba, 0x4c, + 0x6e, 0x31, 0xef, 0x6e, 0x6d, 0x06, 0x81, 0xd8, 0xbc, 0x2c, 0x6d, 0x9d, + 0xd3, 0xd4, 0x2b, 0x01, 0x12, 0xfd, 0x3e, 0x09, 0xa6, 0x7d, 0x3c, 0x56, + 0x34, 0x2a, 0x3b, 0x34, 0x6c, 0x5e, 0xd2, 0x42, 0x11, 0x2e, 0x98, 0xe9, + 0x10, 0x46, 0x43, 0xea, 0x32, 0x8a, 0x99, 0x82, 0xd8, 0x04, 0xf7, 0xd5, + 0xf1, 0x65, 0xfd, 0x68, 0x01, 0x3a, 0x42, 0x55, 0x45, 0xe4, 0x4f, 0xd0, + 0xdf, 0xe7, 0xef, 0x2e, 0xb7, 0xbc, 0x39, 0x60, 0x92, 0xd5, 0x6c, 0x56, + 0xd6, 0x7a, 0x4b, 0x26, 0x8a, 0xe4, 0x28, 0x28, 0x28, 0x03, 0x12, 0x4d, + 0xdc, 0x81, 0x60, 0x14, 0x85, 0x27, 0x3b, 0xbb, 0x24, 0xaa, 0xed, 0xec, + 0xc1, 0xea, 0xf2, 0x64, 0xe7, 0x89, 0x33, 0x67, 0xdb, 0x53, 0x8d, 0x1b, + 0x8f, 0x69, 0x1a, 0xf8, 0x0b, 0x28, 0x66, 0x2b, 0x5a, 0x77, 0xf4, 0xe4, + 0xe1, 0x01, 0x5f, 0xf5, 0xaa, 0x58, 0x3d, 0x45, 0xa2, 0xd3, 0x77, 0x43, + 0x5d, 0x73, 0xb4, 0xfc, 0x8a, 0xc3, 0x7c, 0xb2, 0x9c, 0x4b, 0xec, 0x17, + 0xab, 0xbe, 0xc8, 0x78, 0xa8, 0x5f, 0x0e, 0x21, 0x1d, 0x3c, 0xc6, 0x9a, + 0x4e, 0x59, 0xbc, 0xaf, 0x30, 0xb2, 0x9e, 0x47, 0x26, 0x11, 0xb8, 0x5f, + 0xd3, 0xee, 0x2c, 0x13, 0xb1, 0xd6, 0xdc, 0x9f, 0x02, 0x94, 0x4f, 0x29, + 0x90, 0x02, 0x52, 0x0f, 0xb8, 0x1b, 0x2a, 0x5e, 0x71, 0xd2, 0x98, 0x3f, + 0x25, 0x99, 0x3a, 0x08, 0x9b, 0x79, 0x10, 0x59, 0x8e, 0x47, 0x25, 0xe9, + 0xbf, 0xcc, 0xb3, 0xc9, 0x72, 0x8c, 0xbb, 0x9e, 0xc3, 0x5e, 0xb8, 0x90, + 0xdf, 0x48, 0x50, 0x1f, 0x0d, 0x44, 0x83, 0x9b, 0xf6, 0x44, 0xda, 0x54, + 0xb3, 0x15, 0x36, 0x1d, 0xcf, 0xb9, 0xb4, 0x5d, 0xd6, 0x6c, 0xd8, 0x68, + 0xe4, 0xb2, 0x85, 0xeb, 0x2c, 0x62, 0x7e, 0x95, 0xa9, 0xe9, 0xaf, 0x09, + 0xd2, 0x0b, 0xba, 0x84, 0x93, 0xce, 0xcc, 0xea, 0xb1, 0x14, 0xa3, 0x03, + 0xed, 0x7c, 0xc9, 0xc1, 0x6a, 0xb5, 0xf6, 0x2a, 0x30, 0xac, 0x33, 0x06, + 0x95, 0xcd, 0xc7, 0x74, 0xbc, 0x5f, 0x6a, 0xd4, 0x66, 0xd3, 0xd5, 0x0f, + 0xd0, 0x91, 0xa1, 0x33, 0xe1, 0x2b, 0x56, 0xa4, 0x07, 0x9d, 0xd2, 0x75, + 0x15, 0x99, 0x7a, 0x26, 0xf0, 0xc3, 0x9a, 0x34, 0xd3, 0x4c, 0xdc, 0x02, + 0xb2, 0xaa, 0x5f, 0xf1, 0x0f, 0xe6, 0x58, 0x86, 0x2e, 0x80, 0x16, 0xb4, + 0x48, 0x5a, 0xe8, 0x74, 0xc1, 0x20, 0x5f, 0x4d, 0xdb, 0xf6, 0x7a, 0x8c, + 0x12, 0x9d, 0x36, 0x98, 0xf8, 0xbf, 0x73, 0xda, 0x70, 0xbb, 0xfe, 0xb2, + 0x61, 0x3e, 0xa0, 0x48, 0x0d, 0xe2, 0x2c, 0x5f, 0x42, 0x71, 0xfb, 0x48, + 0xb5, 0x1c, 0x6f, 0x6c, 0x9a, 0xfa, 0xba, 0x15, 0x24, 0xea, 0x02, 0x73, + 0x42, 0x00, 0x9d, 0x98, 0x79, 0xac, 0x0b, 0xed, 0xf4, 0x17, 0x5b, 0x5a, + 0x8d, 0xa4, 0xc6, 0x7d, 0x8c, 0xcc, 0xcb, 0x5e, 0x15, 0x1e, 0x67, 0x5d, + 0x3d, 0x41, 0x04, 0x3e, 0x82, 0xb1, 0x86, 0xbc, 0x06, 0xf0, 0xc7, 0xb8, + 0x7e, 0x93, 0x07, 0xf8, 0x5c, 0x88, 0x4f, 0x3d, 0x7f, 0x32, 0x68, 0xb7, + 0xfd, 0x88, 0x92, 0xee, 0x43, 0x4e, 0x8d, 0x2b, 0x8b, 0x93, 0x42, 0xe0, + 0x64, 0x16, 0x39, 0x43, 0xcb, 0x06, 0xb3, 0xeb, 0xb5, 0xe0, 0xe6, 0x21, + 0xf0, 0x9c, 0x41, 0xc0, 0x45, 0x46, 0x2e, 0x1b, 0xd1, 0x48, 0x16, 0x7f, + 0x64, 0x25, 0xb9, 0xbc, 0x91, 0x8b, 0xa7, 0xd9, 0xf0, 0x1e, 0xf3, 0xb4, + 0x71, 0x5b, 0x03, 0x2d, 0x4b, 0xd2, 0x2c, 0x1b, 0x8b, 0x25, 0x14, 0x82, + 0xdb, 0xcd, 0xa0, 0x29, 0x32, 0x52, 0x35, 0xf2, 0x46, 0x28, 0x15, 0xf2, + 0xd7, 0x59, 0x09, 0x40, 0xd8, 0xef, 0x65, 0xa5, 0x36, 0xa4, 0xa7, 0x8a, + 0xd9, 0xb6, 0x10, 0xc6, 0xa3, 0x11, 0x6d, 0x6f, 0x94, 0x10, 0x44, 0x0d, + 0x9e, 0x2b, 0xbc, 0xb0, 0x92, 0xad, 0x28, 0xb8, 0x86, 0xf1, 0x42, 0x5c, + 0x28, 0x03, 0x62, 0xad, 0xb3, 0xc2, 0xb5, 0xb8, 0xbb, 0x48, 0x8e, 0x18, + 0x04, 0x30, 0xaa, 0x41, 0x1c, 0xbf, 0x96, 0x08, 0x4e, 0xad, 0x80, 0xc1, + 0x08, 0x45, 0xce, 0xff, 0x9a, 0x8d, 0x54, 0x4a, 0xe2, 0x9b, 0xbe, 0x0d, + 0xb9, 0xf6, 0x0a, 0xd1, 0xe1, 0xa4, 0xb6, 0x47, 0x93, 0xa5, 0x38, 0x09, + 0x79, 0x40, 0xf3, 0xa4, 0x64, 0x05, 0x16, 0xb1, 0xe3, 0xa2, 0x67, 0xd0, + 0x69, 0x12, 0x6c, 0x47, 0xc4, 0xb4, 0x4a, 0x4c, 0x61, 0x03, 0x34, 0xce, + 0x55, 0x76, 0x52, 0x39, 0x1a, 0x8b, 0xc3, 0xae, 0xb0, 0x35, 0x32, 0xc0, + 0xaf, 0xa7, 0x0c, 0xbf, 0xc1, 0x6e, 0xcc, 0x9b, 0x51, 0x7b, 0x6f, 0xf0, + 0xe1, 0x80, 0x2b, 0x56, 0x72, 0x0c, 0xb5, 0xb8, 0x27, 0x96, 0x9a, 0xda, + 0x27, 0xc5, 0x90, 0x7d, 0x2b, 0xf3, 0x6d, 0x2e, 0x4f, 0x5c, 0xe6, 0xe3, + 0x46, 0x23, 0xb7, 0x3e, 0xd3, 0xad, 0x40, 0x80, 0x05, 0xb6, 0x6c, 0x80, + 0x87, 0x89, 0x79, 0xbc, 0xd7, 0x5f, 0x32, 0xe7, 0xc7, 0xd9, 0x0a, 0x1d, + 0x22, 0x2d, 0xe6, 0xfa, 0x6e, 0xe1, 0xfc, 0x0b, 0xaa, 0xda, 0xf2, 0x4e, + 0x00, 0x7a, 0xab, 0xad, 0x8e, 0xb2, 0xc3, 0x93, 0x5d, 0x2d, 0x1a, 0xc1, + 0x13, 0x12, 0x06, 0x2d, 0x4b, 0x77, 0x25, 0x05, 0xaa, 0xcc, 0x6f, 0xe5, + 0x65, 0x6d, 0x57, 0xc3, 0x2a, 0x94, 0x35, 0x04, 0x1c, 0xa5, 0x65, 0x74, + 0x8d, 0x7a, 0xd5, 0x2c, 0x62, 0x62, 0x8e, 0x9b, 0x4f, 0xb7, 0xa0, 0x54, + 0x97, 0x8b, 0xcd, 0xdd, 0x2d, 0xc1, 0x5d, 0xd3, 0x54, 0x7e, 0x0b, 0xdf, + 0x68, 0xf3, 0x1e, 0xfa, 0xfa, 0x57, 0x41, 0x6d, 0x55, 0xe6, 0x1d, 0x80, + 0x84, 0x45, 0xfc, 0xe6, 0x95, 0x1c, 0x0a, 0x3c, 0x6e, 0x1a, 0x3d, 0x1b, + 0x21, 0x5b, 0x38, 0xa3, 0x64, 0xb5, 0x2d, 0xd8, 0x4f, 0x53, 0x08, 0xe4, + 0xfa, 0x66, 0x5a, 0x86, 0x19, 0x7c, 0x9c, 0xdf, 0x2c, 0x95, 0x44, 0x68, + 0xf5, 0xa6, 0x93, 0x3e, 0xc8, 0xf8, 0x3a, 0xcf, 0x9a, 0x08, 0x61, 0xec, + 0x64, 0xe7, 0x35, 0xd8, 0x32, 0x57, 0x68, 0x6b, 0xa5, 0x8c, 0x0e, 0xbb, + 0x14, 0x3b, 0x61, 0x1d, 0x34, 0xf3, 0x5a, 0xd6, 0x0d, 0x43, 0x95, 0x2d, + 0x6d, 0xd0, 0xfb, 0x41, 0xf4, 0xb7, 0x65, 0x3a, 0xbe, 0xc5, 0xde, 0x22, + 0xfc, 0x09, 0x1e, 0xaa, 0xc4, 0xc9, 0xad, 0x74, 0x3d, 0xb0, 0x64, 0x2e, + 0x15, 0xb1, 0x58, 0xff, 0x84, 0x98, 0x62, 0x54, 0xd6, 0x52, 0xa5, 0x86, + 0xcf, 0xaa, 0xd3, 0x2b, 0x80, 0x12, 0x25, 0x27, 0x50, 0x2d, 0x30, 0xa2, + 0x8d, 0x4c, 0x32, 0x8e, 0x90, 0x65, 0x47, 0x8b, 0x50, 0xc1, 0x3a, 0x6c, + 0xf6, 0xee, 0x6c, 0xc5, 0x59, 0xe8, 0xdd, 0x0a, 0xe9, 0x45, 0x5d, 0xe2, + 0x59, 0x74, 0x4f, 0x74, 0x6d, 0x7d, 0x6b, 0x0e, 0xf9, 0x26, 0xda, 0xf5, + 0x9a, 0xae, 0x85, 0xb4, 0xa5, 0x0b, 0xdf, 0xba, 0x34, 0x1e, 0xdc, 0xb5, + 0x98, 0x6b, 0xdf, 0x7c, 0xef, 0xb5, 0xb6, 0xbf, 0xd5, 0x35, 0xf3, 0x98, + 0x0d, 0x78, 0xdc, 0x6a, 0x3d, 0x7b, 0x4e, 0x22, 0x76, 0x57, 0x5e, 0x09, + 0x5b, 0xbc, 0x65, 0xd1, 0x4c, 0xf0, 0x73, 0x15, 0xd8, 0x78, 0xc2, 0x4c, + 0x37, 0x6c, 0xed, 0x89, 0xad, 0xb6, 0x8c, 0x70, 0x32, 0x79, 0x5d, 0x9b, + 0x65, 0xba, 0x1c, 0x54, 0x06, 0xab, 0x21, 0x6e, 0x6b, 0xd2, 0x96, 0xac, + 0x12, 0x7c, 0x54, 0x89, 0x87, 0x6b, 0x29, 0x06, 0x9f, 0x54, 0x9f, 0x68, + 0x4f, 0x5f, 0x66, 0xf5, 0x61, 0x92, 0x70, 0xa4, 0x91, 0xc4, 0x3f, 0xbd, + 0x49, 0xc7, 0x79, 0x56, 0x64, 0x57, 0x72, 0xab, 0x7b, 0xdc, 0x4c, 0x35, + 0x38, 0x71, 0x7a, 0x71, 0xcc, 0xce, 0xdd, 0x26, 0xbf, 0xd0, 0x72, 0x7c, + 0x6c, 0xf9, 0x45, 0x40, 0x21, 0x5d, 0xda, 0x33, 0xa2, 0x75, 0xe6, 0x22, + 0x6c, 0x09, 0x2e, 0xc5, 0x10, 0x1e, 0x47, 0xce, 0xad, 0xc3, 0xe7, 0xdc, + 0x42, 0x26, 0x9f, 0x3d, 0xae, 0x49, 0xf3, 0x56, 0x68, 0x15, 0x17, 0xb3, + 0xde, 0x4e, 0xb4, 0xb2, 0x8e, 0x62, 0x22, 0x89, 0xf2, 0x63, 0xaf, 0xb5, + 0x8f, 0xce, 0x14, 0x18, 0xe0, 0x97, 0xc3, 0x68, 0x1c, 0x56, 0x4c, 0xe4, + 0x40, 0xc0, 0x93, 0xe3, 0xcb, 0xd7, 0xd1, 0x24, 0x8f, 0x69, 0xfa, 0xf8, + 0xb7, 0x4f, 0x3a, 0xc0, 0xcf, 0x71, 0x23, 0x0b, 0xb8, 0x58, 0xf0, 0x26, + 0xf5, 0xd9, 0xf3, 0xd8, 0xdf, 0x79, 0x3a, 0x28, 0x1f, 0x5a, 0x23, 0x05, + 0x43, 0xeb, 0xa5, 0x56, 0xd6, 0xf0, 0xdb, 0xa5, 0x09, 0x9e, 0x39, 0x62, + 0x66, 0x1f, 0x56, 0x0d, 0x90, 0xc3, 0x36, 0x50, 0x60, 0xd4, 0x2b, 0xee, + 0xe3, 0x79, 0x4f, 0x25, 0x1f, 0x1b, 0x76, 0xd9, 0x1a, 0x75, 0x29, 0x81, + 0x96, 0xd5, 0x50, 0xca, 0xa6, 0x1e, 0xd2, 0x1a, 0x58, 0x69, 0x71, 0x95, + 0x6d, 0x71, 0x94, 0xf6, 0xf1, 0x1a, 0xf4, 0xc4, 0xa2, 0x4a, 0x98, 0xed, + 0x5a, 0xbc, 0xaf, 0x2d, 0x53, 0xc3, 0xd0, 0x40, 0x0c, 0x1b, 0xa8, 0xc0, + 0x22, 0xac, 0x49, 0xfa, 0x65, 0xbb, 0x51, 0x7f, 0xa9, 0xe9, 0xb0, 0xed, + 0x49, 0x42, 0x56, 0x08, 0xda, 0xb0, 0xdd, 0x6a, 0x24, 0x06, 0x29, 0xd5, + 0x5c, 0x8f, 0x03, 0xa9, 0x9d, 0x2b, 0xe1, 0x67, 0x75, 0x8e, 0xd6, 0x5f, + 0x46, 0xd1, 0x7e, 0x57, 0x88, 0x3c, 0x99, 0x73, 0x4d, 0x0d, 0x21, 0x6d, + 0xdc, 0xde, 0x8e, 0x0f, 0x56, 0x19, 0x9e, 0x4b, 0x66, 0xe9, 0x2f, 0xdb, + 0x47, 0x17, 0xe7, 0x09, 0x5f, 0x4e, 0x12, 0x02, 0xa9, 0x25, 0xc4, 0x06, + 0xff, 0x0e, 0xc4, 0xed, 0x2a, 0xbe, 0x82, 0xe7, 0x43, 0x6f, 0xb7, 0x11, + 0xa4, 0x3f, 0x5a, 0xf2, 0x77, 0xad, 0x95, 0xba, 0x95, 0x19, 0xca, 0x13, + 0xea, 0x94, 0x0d, 0x5c, 0xab, 0x05, 0x07, 0xca, 0xcd, 0x18, 0x39, 0xd8, + 0x4c, 0xee, 0x2c, 0xfd, 0xb1, 0x7e, 0x5c, 0xa7, 0x89, 0xa5, 0xf0, 0x8e, + 0x50, 0x88, 0xa8, 0x99, 0xdd, 0xa5, 0x0f, 0xd8, 0x99, 0xa4, 0x71, 0x6d, + 0x3d, 0x6a, 0x73, 0x50, 0xa3, 0x01, 0x97, 0xc0, 0xa5, 0x42, 0xbf, 0x40, + 0x19, 0xa8, 0xb5, 0x41, 0x1b, 0x71, 0x68, 0xec, 0x0c, 0x9b, 0x71, 0xb3, + 0x24, 0x81, 0xb4, 0xd7, 0x62, 0x35, 0x37, 0x43, 0x6e, 0x8a, 0x42, 0x18, + 0x31, 0x52, 0xf0, 0x2d, 0x4b, 0x4b, 0x5e, 0xe7, 0x4c, 0xef, 0x3b, 0xa0, + 0x1d, 0x5a, 0x29, 0xa3, 0x47, 0x0a, 0x74, 0x89, 0xd5, 0x48, 0x2b, 0xcc, + 0x63, 0x54, 0x6e, 0x01, 0x1f, 0x0f, 0xbb, 0x33, 0x28, 0x7c, 0xb1, 0x7b, + 0x5e, 0xc3, 0x06, 0x1b, 0xc4, 0x97, 0xb9, 0x0c, 0x40, 0xf6, 0x4f, 0xaa, + 0xd9, 0xad, 0xc1, 0x44, 0xa4, 0xb2, 0x08, 0x31, 0x11, 0xe9, 0x53, 0x38, + 0x93, 0x07, 0xbb, 0x68, 0x19, 0x49, 0x35, 0x53, 0xe3, 0x31, 0x3a, 0x58, + 0x8a, 0x6d, 0xc2, 0x67, 0x75, 0x70, 0x4a, 0x3b, 0x0c, 0xa7, 0x6a, 0xac, + 0xbd, 0x3c, 0x3c, 0x0f, 0x6c, 0xe1, 0xa4, 0xc2, 0x15, 0xcd, 0x94, 0x26, + 0x17, 0x65, 0x86, 0x60, 0x9d, 0xb9, 0x6b, 0x7d, 0xf6, 0x6f, 0x5c, 0x1b, + 0x3f, 0x83, 0x60, 0x79, 0xdc, 0x87, 0xb5, 0xa5, 0xd1, 0xfc, 0xbd, 0x74, + 0xd2, 0x9a, 0x45, 0xa1, 0x0b, 0x64, 0x38, 0xdc, 0xba, 0x44, 0x9c, 0x35, + 0x66, 0x69, 0x92, 0x27, 0x47, 0x34, 0x18, 0x16, 0x6e, 0xae, 0x89, 0x7c, + 0xbe, 0xf4, 0x39, 0x5d, 0x4d, 0xa9, 0x2c, 0xc8, 0x04, 0x87, 0x9b, 0x03, + 0xb5, 0x9b, 0xbc, 0xb1, 0x8e, 0x5b, 0x49, 0x42, 0xdc, 0x0e, 0xf1, 0x1b, + 0x6b, 0x16, 0x69, 0x7b, 0x9e, 0x3c, 0x8a, 0xab, 0x73, 0x60, 0xc8, 0xcd, + 0x52, 0xc0, 0xbc, 0x34, 0x77, 0xcd, 0x61, 0xb5, 0xe7, 0x09, 0x32, 0x00, + 0x79, 0xc0, 0xc1, 0x88, 0x8b, 0x96, 0xdb, 0x09, 0x39, 0x51, 0xc9, 0x4c, + 0xdd, 0x5a, 0xa3, 0x3c, 0xbb, 0xa5, 0x13, 0xc2, 0xef, 0x41, 0x18, 0xe5, + 0xb5, 0x97, 0x43, 0x6e, 0xa6, 0x2c, 0x3a, 0x06, 0x0a, 0xf7, 0xda, 0x34, + 0xcc, 0x19, 0xde, 0xb5, 0x26, 0xd2, 0xf8, 0xc3, 0x22, 0x40, 0x53, 0x08, + 0x03, 0xb4, 0x0b, 0x14, 0x57, 0x0f, 0x57, 0x40, 0x82, 0x5b, 0x5e, 0x0c, + 0x2e, 0x0d, 0x8d, 0xb4, 0x01, 0xcd, 0xfb, 0x9b, 0xd3, 0x90, 0x23, 0x8b, + 0x90, 0x86, 0x5a, 0xf6, 0xbc, 0x42, 0x4c, 0x22, 0x09, 0xbc, 0x24, 0xaa, + 0x92, 0x3b, 0x9e, 0xdd, 0x7e, 0x75, 0xe5, 0x1f, 0x50, 0xa7, 0x7d, 0x1f, + 0xb2, 0x2e, 0xae, 0xc1, 0x2b, 0x35, 0x84, 0x8a, 0xd1, 0x71, 0xe2, 0x51, + 0xe4, 0x63, 0x11, 0x2f, 0x7a, 0x28, 0x03, 0xc9, 0xba, 0x6e, 0xf3, 0x76, + 0xf7, 0x29, 0x35, 0xaa, 0xae, 0xc0, 0x51, 0xc1, 0xfb, 0x83, 0x0c, 0xd5, + 0x34, 0xa8, 0x21, 0xf3, 0xc7, 0x30, 0x48, 0xba, 0xcd, 0x68, 0x09, 0x64, + 0x83, 0xa4, 0xf0, 0xa6, 0x59, 0x89, 0x8b, 0x71, 0x39, 0x6c, 0x8c, 0x8d, + 0x12, 0xf2, 0x0c, 0x0c, 0x6e, 0x10, 0x1d, 0xb3, 0x9d, 0xb5, 0x45, 0x79, + 0x48, 0x5d, 0xad, 0x43, 0x29, 0x19, 0x9e, 0x2a, 0x76, 0x82, 0x44, 0x5f, + 0xab, 0x36, 0xc6, 0x75, 0xc2, 0x90, 0xad, 0xe7, 0x52, 0x24, 0xa4, 0x74, + 0x5b, 0x9b, 0x22, 0x55, 0x94, 0x92, 0xc8, 0xae, 0xf1, 0x8e, 0xf6, 0x81, + 0x83, 0xca, 0x7a, 0xed, 0xed, 0xfd, 0xbd, 0x48, 0x5c, 0x96, 0xd0, 0x33, + 0x04, 0xe0, 0xa5, 0x6d, 0xb2, 0x51, 0xf0, 0x58, 0xf8, 0xca, 0xfe, 0x67, + 0x3b, 0x16, 0x91, 0xc5, 0x19, 0xec, 0xe1, 0x33, 0x48, 0xe8, 0x6e, 0xde, + 0x33, 0x48, 0x74, 0xcf, 0x4a, 0xf7, 0x64, 0x1d, 0x9a, 0xf5, 0xc5, 0xe0, + 0x69, 0xc5, 0xbc, 0x3b, 0x2f, 0xa7, 0x33, 0x07, 0x0d, 0x64, 0x3a, 0xc1, + 0xdb, 0xcb, 0xd3, 0x37, 0x51, 0x43, 0x17, 0x10, 0x2d, 0xb4, 0xed, 0xbb, + 0x7f, 0x45, 0x29, 0xa0, 0x2f, 0x4e, 0x4e, 0x86, 0x50, 0x09, 0xd4, 0x51, + 0xdd, 0x08, 0xb8, 0x28, 0x85, 0x7c, 0x58, 0xac, 0xca, 0x53, 0x52, 0xe9, + 0x49, 0x86, 0xa4, 0xdf, 0xcb, 0x6c, 0x9c, 0x4d, 0x39, 0x99, 0x90, 0xdf, + 0x49, 0xb4, 0x54, 0x3c, 0xae, 0x77, 0x86, 0x2e, 0x9b, 0x82, 0x2b, 0x91, + 0x26, 0xde, 0x08, 0x98, 0x59, 0x68, 0xc8, 0xb1, 0x63, 0x29, 0x8a, 0x78, + 0xc5, 0x77, 0x05, 0x17, 0xa8, 0x9c, 0xe8, 0x4d, 0x93, 0x02, 0xef, 0x9b, + 0x05, 0x4d, 0xb5, 0x71, 0xdc, 0xa6, 0x88, 0xfa, 0x6b, 0xa4, 0x72, 0x6a, + 0xcd, 0xaa, 0x9a, 0x92, 0x3f, 0x9f, 0x64, 0x39, 0xdc, 0x76, 0x01, 0x4a, + 0x0c, 0xa0, 0xcd, 0x96, 0x08, 0x8a, 0x01, 0xd7, 0x5c, 0x35, 0x8f, 0xd2, + 0xfd, 0x4d, 0xa6, 0xa1, 0xbe, 0xb2, 0xd2, 0xcc, 0x98, 0x24, 0x0e, 0x02, + 0xee, 0x39, 0x01, 0x18, 0x11, 0x9c, 0x42, 0xc7, 0x49, 0x82, 0xdd, 0x68, + 0x73, 0xaf, 0xb9, 0x2a, 0x71, 0x92, 0x69, 0xd5, 0x13, 0xfb, 0x26, 0x6d, + 0xce, 0x51, 0x7a, 0xbd, 0x06, 0x7f, 0xab, 0x4d, 0xe9, 0xe0, 0xd1, 0x38, + 0x7d, 0xa3, 0x5d, 0xdd, 0x68, 0x8d, 0x0e, 0xae, 0xe8, 0x1b, 0x44, 0x6d, + 0xbf, 0x20, 0xc3, 0xcb, 0x57, 0x2c, 0x15, 0x6d, 0x43, 0xd4, 0x0d, 0x5c, + 0x7c, 0xa6, 0x6b, 0xbc, 0x6b, 0x38, 0xb4, 0x1e, 0x53, 0x29, 0xaa, 0xa9, + 0x59, 0x3c, 0xa5, 0xff, 0x51, 0xe9, 0x38, 0xa3, 0x91, 0xaa, 0x14, 0xd9, + 0x1a, 0xc2, 0xf9, 0x1d, 0xd2, 0x3e, 0x4c, 0xce, 0xcc, 0xf4, 0xa1, 0x10, + 0x8d, 0xaa, 0x28, 0x27, 0x19, 0x83, 0x8b, 0x58, 0x50, 0x52, 0x6e, 0x97, + 0xf9, 0xdf, 0xff, 0xd1, 0xf4, 0x53, 0xff, 0xf8, 0x13, 0xec, 0x43, 0x08, + 0xaf, 0x75, 0x3e, 0x14, 0x23, 0xa3, 0xc2, 0x63, 0x0b, 0xf2, 0x8e, 0x71, + 0x2e, 0x8b, 0xce, 0xd0, 0x2a, 0x83, 0xd7, 0x55, 0x18, 0x8b, 0x4c, 0xb3, + 0xc4, 0x03, 0x1d, 0x9d, 0x5d, 0x04, 0xc0, 0x7b, 0x09, 0xea, 0xf8, 0x06, + 0xc5, 0x03, 0x24, 0x62, 0x7a, 0x1d, 0xe2, 0x92, 0xc5, 0xa3, 0x2b, 0x98, + 0x8f, 0x85, 0x95, 0x73, 0x20, 0xb0, 0xd8, 0xcf, 0x31, 0x03, 0xbe, 0x68, + 0xe0, 0x0c, 0x4c, 0xe7, 0x4d, 0x34, 0x10, 0xd9, 0x68, 0x8d, 0xe9, 0xfd, + 0x3b, 0x9d, 0xb2, 0x5e, 0x79, 0x9f, 0xfd, 0x63, 0xc0, 0x5e, 0x35, 0x70, + 0xe2, 0x7e, 0x26, 0xe0, 0xa1, 0xef, 0x3f, 0xd9, 0x65, 0xbd, 0xbb, 0xd3, + 0x84, 0x4c, 0xc5, 0x22, 0xd8, 0xa6, 0xbb, 0x28, 0xfd, 0x35, 0xe0, 0x23, + 0xd5, 0xee, 0xb8, 0x97, 0x1e, 0x5f, 0x0a, 0xff, 0x18, 0xf0, 0xbf, 0x3f, + 0xee, 0xf6, 0x9f, 0xfd, 0xe4, 0x7a, 0xfd, 0x64, 0xf7, 0xfd, 0x27, 0x7b, + 0x9d, 0x36, 0x54, 0x55, 0xb6, 0x4c, 0x2c, 0x0d, 0x09, 0xd3, 0xf4, 0x39, + 0xad, 0x1d, 0x2a, 0x8e, 0x2e, 0xb5, 0xfc, 0x78, 0xb4, 0x35, 0x80, 0x3f, + 0xb6, 0x38, 0x11, 0x59, 0x6d, 0x69, 0xcf, 0xb4, 0x57, 0x08, 0x5b, 0xb1, + 0x84, 0xfb, 0x52, 0x80, 0x81, 0x76, 0xab, 0x95, 0xf1, 0x60, 0xd9, 0x46, + 0xb0, 0x8d, 0xda, 0x0c, 0x1b, 0xe6, 0x49, 0x0e, 0xfa, 0x99, 0xac, 0xe8, + 0xe2, 0x13, 0xb0, 0x0b, 0x97, 0xd5, 0x6b, 0xa2, 0xa4, 0xd5, 0x14, 0x95, + 0xfc, 0xa1, 0xcd, 0xd8, 0x8a, 0x89, 0x45, 0x48, 0x35, 0xd9, 0x6a, 0x53, + 0x68, 0xbc, 0x0e, 0xe1, 0x69, 0x7e, 0x94, 0xb8, 0xfa, 0xa2, 0x4a, 0xec, + 0xfe, 0xfc, 0xd4, 0x20, 0x27, 0x5a, 0x4f, 0x4f, 0xd0, 0x54, 0xac, 0x33, + 0x0a, 0x6a, 0x3d, 0x2b, 0xc8, 0xac, 0x43, 0x72, 0xc2, 0x57, 0xf7, 0xc0, + 0x95, 0x6e, 0x00, 0x25, 0x21, 0x15, 0xcb, 0xb9, 0x7b, 0x42, 0x30, 0xaf, + 0xf0, 0x65, 0x17, 0xae, 0x21, 0xd9, 0x76, 0x44, 0xd3, 0xa8, 0x67, 0xb4, + 0x2c, 0x9b, 0x49, 0xf6, 0x83, 0xad, 0xd6, 0x50, 0x53, 0x03, 0x95, 0xf2, + 0x31, 0xbb, 0x51, 0x10, 0xe4, 0x14, 0x15, 0x02, 0xdb, 0xc9, 0x00, 0xe2, + 0x82, 0x78, 0x91, 0x78, 0xc3, 0x40, 0x23, 0x98, 0x53, 0x8b, 0xed, 0xf5, + 0x1c, 0x0e, 0x4c, 0x32, 0x2d, 0x92, 0xc1, 0xbf, 0x95, 0xfc, 0x2a, 0x5b, + 0xd4, 0x8f, 0x1b, 0x1e, 0xc0, 0x0a, 0xfb, 0x97, 0xb0, 0x8f, 0x6a, 0x15, + 0x3e, 0xa9, 0x2c, 0xe0, 0xca, 0xdc, 0xb9, 0x49, 0x15, 0x42, 0x1e, 0x8d, + 0x2c, 0x89, 0xd8, 0xec, 0x52, 0x92, 0x36, 0xda, 0x00, 0x26, 0x41, 0x0a, + 0xa9, 0x73, 0x49, 0xc0, 0x3b, 0x9f, 0x49, 0x72, 0x17, 0xcb, 0xb7, 0x4d, + 0x30, 0x3c, 0x77, 0x13, 0x56, 0xf4, 0x6d, 0xa9, 0x26, 0xae, 0xcc, 0x6e, + 0x0c, 0xee, 0x24, 0xb5, 0x1a, 0xaa, 0xf3, 0x6d, 0xd1, 0xc0, 0x5c, 0x69, + 0xd1, 0xa5, 0x93, 0x0f, 0x24, 0xa3, 0x12, 0x5a, 0x52, 0xa7, 0xcf, 0xb1, + 0x32, 0x1d, 0x81, 0xa4, 0x85, 0x72, 0x18, 0x34, 0xf7, 0x28, 0x78, 0xd7, + 0x8b, 0xaa, 0x6b, 0x98, 0xad, 0x46, 0xd1, 0xcb, 0xc5, 0x4d, 0x4e, 0x32, + 0xcd, 0x23, 0x20, 0x04, 0xf4, 0x94, 0x3c, 0xe3, 0x18, 0xed, 0xc2, 0x27, + 0xed, 0xff, 0x86, 0xd9, 0xf0, 0x1c, 0x58, 0xff, 0x64, 0x67, 0xb7, 0x51, + 0x85, 0xc4, 0x17, 0x1e, 0x57, 0xdd, 0x91, 0x97, 0x98, 0x16, 0xe7, 0xe2, + 0xf5, 0x61, 0x14, 0xed, 0x3d, 0xdf, 0x7d, 0xbe, 0xbd, 0xbb, 0x33, 0x78, + 0x32, 0xd8, 0x8b, 0x9c, 0x69, 0x9c, 0x64, 0x75, 0x2e, 0xf3, 0x83, 0xd0, + 0x9a, 0xf6, 0x68, 0x14, 0x56, 0xf8, 0xa8, 0x31, 0x8e, 0x9b, 0x71, 0x9f, + 0xc0, 0xf8, 0xe2, 0xaf, 0xf0, 0x98, 0x03, 0x67, 0x5c, 0x64, 0x86, 0xd9, + 0xbe, 0x1b, 0xce, 0xea, 0x79, 0x1f, 0xe3, 0x50, 0xa1, 0x6f, 0x29, 0x68, + 0xca, 0xd1, 0x72, 0x94, 0x92, 0xd0, 0x52, 0x72, 0x11, 0x3c, 0xd6, 0x20, + 0x48, 0x94, 0x35, 0xac, 0x9e, 0x1e, 0xc7, 0x02, 0xba, 0x2a, 0x89, 0xed, + 0x01, 0x8a, 0x26, 0xab, 0x04, 0x86, 0x0b, 0x44, 0xaa, 0xa6, 0x9a, 0x8b, + 0x0b, 0xe0, 0x15, 0xba, 0xf1, 0xa5, 0xec, 0xcc, 0xd7, 0x2e, 0x1b, 0x38, + 0x6e, 0x8d, 0xf3, 0x04, 0x56, 0xa7, 0xd7, 0x7e, 0xb9, 0xa8, 0x14, 0x87, + 0x1c, 0x79, 0x38, 0x12, 0xfd, 0x40, 0x88, 0x55, 0x44, 0x41, 0xcc, 0xbb, + 0x0d, 0x3a, 0x2d, 0x75, 0xb5, 0x12, 0xfc, 0x8e, 0x2b, 0x9a, 0x07, 0x7b, + 0x77, 0x45, 0xc7, 0x13, 0xa3, 0x32, 0x8a, 0x63, 0x3f, 0x16, 0x60, 0xf8, + 0x08, 0xce, 0x9c, 0xd0, 0xc2, 0xde, 0xff, 0x97, 0x68, 0x61, 0xef, 0xff, + 0xa7, 0x85, 0x7f, 0x13, 0x2d, 0xbc, 0xa8, 0xd1, 0x02, 0x6b, 0x76, 0xc4, + 0xb7, 0x54, 0xc1, 0x6b, 0x22, 0xf1, 0x08, 0x55, 0x04, 0x64, 0xe1, 0xeb, + 0xc7, 0xb1, 0x7e, 0x2f, 0x30, 0x21, 0xfa, 0xb2, 0x42, 0x07, 0xa1, 0xa2, + 0x9d, 0xc6, 0x41, 0x36, 0x91, 0x34, 0xb9, 0x60, 0x1f, 0xfb, 0xe1, 0xcf, + 0xdd, 0x5b, 0x2c, 0x46, 0xf3, 0x67, 0x4b, 0x31, 0x8e, 0x24, 0x57, 0xd8, + 0x05, 0xf8, 0x76, 0x7b, 0xf8, 0x12, 0xe1, 0xd7, 0x9c, 0x71, 0xdf, 0xe0, + 0xef, 0xb0, 0xa7, 0x98, 0xce, 0x8e, 0x76, 0xa4, 0xe6, 0xaf, 0x0d, 0x49, + 0x4b, 0x34, 0xe4, 0x51, 0x97, 0xae, 0x02, 0x46, 0xdb, 0xf0, 0xa9, 0xbc, + 0x2d, 0x65, 0x9c, 0xaf, 0xd2, 0x07, 0xd1, 0x67, 0x7f, 0x4e, 0xf2, 0x2c, + 0x32, 0x7f, 0x93, 0x86, 0xd2, 0x01, 0x3e, 0xca, 0x52, 0xe2, 0xfd, 0x87, + 0xdc, 0x6b, 0x43, 0x44, 0xfd, 0x13, 0x50, 0xfd, 0x24, 0x7a, 0x92, 0x63, + 0xc2, 0x6c, 0x34, 0x4c, 0x03, 0x93, 0x49, 0x6a, 0xc2, 0x9f, 0x5f, 0x38, + 0x2b, 0xb3, 0x07, 0x57, 0x76, 0xd9, 0x52, 0x51, 0x96, 0x57, 0x66, 0xb3, + 0x6c, 0x29, 0x9a, 0x9b, 0x5e, 0x49, 0x36, 0x85, 0x0c, 0xc7, 0x65, 0x05, + 0x37, 0x84, 0x8e, 0x7e, 0x14, 0x1d, 0x25, 0xf3, 0x95, 0xd9, 0x66, 0xbc, + 0x46, 0x2f, 0x95, 0x99, 0x20, 0xe3, 0x94, 0xde, 0xe5, 0x61, 0x26, 0x2a, + 0x37, 0xc4, 0xe6, 0x90, 0xaa, 0x63, 0x2e, 0x5b, 0x5c, 0x1f, 0xaf, 0xdc, + 0x32, 0x64, 0x22, 0xcc, 0x85, 0x6b, 0xb1, 0x09, 0x00, 0x00, 0x13, 0x5f, + 0xd1, 0x9f, 0xb5, 0xf8, 0xe8, 0x32, 0x6c, 0x41, 0xef, 0x15, 0x0f, 0x4e, + 0xb1, 0x1c, 0xfd, 0x15, 0x2c, 0x8a, 0x09, 0x93, 0xeb, 0xd6, 0xf0, 0x19, + 0x0c, 0x51, 0xef, 0xb8, 0xd6, 0xc1, 0x72, 0x24, 0x28, 0x07, 0x65, 0xb3, + 0x39, 0xfa, 0x10, 0x82, 0xb5, 0xcb, 0x80, 0x57, 0x3a, 0x0b, 0xec, 0x74, + 0x8d, 0x49, 0x05, 0xe6, 0xa6, 0xc6, 0xbe, 0xdb, 0x79, 0xe2, 0x2a, 0x49, + 0x85, 0x1a, 0x16, 0xc2, 0xcd, 0x72, 0xab, 0x29, 0x8e, 0x6a, 0x67, 0x56, + 0xe3, 0xc7, 0xd7, 0xb6, 0x45, 0xd4, 0xda, 0x63, 0x65, 0xa7, 0xe8, 0xfd, + 0x89, 0x7f, 0xb4, 0x57, 0xcb, 0xad, 0x24, 0x68, 0x98, 0x0d, 0x9e, 0x1f, + 0xc7, 0xd1, 0xc0, 0xeb, 0xeb, 0x3a, 0x78, 0xc5, 0xdf, 0x4a, 0x0f, 0x8f, + 0xb7, 0x0d, 0x6d, 0xe6, 0x17, 0x74, 0xf0, 0x6e, 0x6e, 0x91, 0x60, 0x46, + 0xe6, 0x0b, 0x17, 0xb0, 0x49, 0x52, 0x5e, 0x3e, 0x17, 0x03, 0xba, 0x48, + 0xa4, 0xb1, 0xd5, 0x8f, 0xe3, 0x3c, 0x1c, 0xe0, 0x7d, 0xd5, 0x83, 0x1c, + 0x18, 0x40, 0x67, 0x0a, 0xfe, 0x4a, 0xff, 0xf2, 0xde, 0x42, 0x3b, 0xb5, + 0xb8, 0x68, 0x93, 0x16, 0x17, 0x59, 0x29, 0x11, 0xda, 0x6c, 0xb6, 0x64, + 0xe9, 0x36, 0xe7, 0xbb, 0xa1, 0x05, 0xe3, 0xc8, 0x36, 0xc2, 0x92, 0xf4, + 0xb9, 0x59, 0x6e, 0x70, 0xb9, 0x10, 0x27, 0xa8, 0x24, 0x2c, 0x68, 0x99, + 0x07, 0x64, 0x30, 0x18, 0xe5, 0x4a, 0xcf, 0x75, 0xc3, 0x14, 0x4c, 0x26, + 0xb8, 0xec, 0x5c, 0x78, 0xf7, 0x5d, 0x96, 0x4e, 0x50, 0x02, 0x37, 0xcf, + 0x5b, 0xf0, 0xdf, 0x3f, 0x2e, 0xde, 0xb2, 0x17, 0xe0, 0xbc, 0xc4, 0x45, + 0xe8, 0x1e, 0x6b, 0x5a, 0x85, 0x5d, 0xfc, 0x6f, 0x2c, 0x21, 0x6d, 0x44, + 0xc4, 0xf3, 0xb8, 0xb4, 0x23, 0xe6, 0xb7, 0x01, 0xa3, 0x94, 0x94, 0x6b, + 0xf6, 0xd6, 0x8d, 0x93, 0x16, 0x7c, 0x3f, 0xa8, 0x85, 0xed, 0xc1, 0x5a, + 0xb5, 0x08, 0xc9, 0xbd, 0xc6, 0x7d, 0x22, 0x01, 0xdf, 0x1f, 0xbe, 0x55, + 0x5a, 0x2e, 0x15, 0xbd, 0x53, 0x02, 0xce, 0x28, 0x15, 0xd9, 0x9c, 0x7c, + 0x30, 0x68, 0x89, 0x37, 0x33, 0x4a, 0x96, 0x10, 0xb6, 0xfb, 0xf0, 0xed, + 0x1c, 0x06, 0x10, 0x12, 0x65, 0xc4, 0x09, 0xf0, 0x0b, 0xa7, 0xf2, 0xb0, + 0xea, 0x93, 0x42, 0xc6, 0x66, 0xb7, 0xd6, 0x09, 0xd8, 0x46, 0x2f, 0x10, + 0xca, 0x43, 0x44, 0x93, 0x4a, 0x96, 0x7a, 0xcd, 0x4b, 0x6d, 0x06, 0x5a, + 0xad, 0xac, 0x3b, 0x9b, 0x2d, 0xeb, 0xb4, 0x38, 0xb7, 0x5a, 0xbe, 0xa2, + 0x49, 0x85, 0xb5, 0xdb, 0xcd, 0xdc, 0x6e, 0x68, 0x81, 0x82, 0xe3, 0x2d, + 0x09, 0x2b, 0xa0, 0x2d, 0xd6, 0x4a, 0xdb, 0x65, 0xaf, 0x6d, 0x17, 0xa9, + 0x9e, 0x33, 0xc6, 0x43, 0x9f, 0x78, 0xdd, 0xa2, 0x96, 0xb0, 0xf2, 0xa4, + 0x6d, 0xca, 0x40, 0xd4, 0x7c, 0x74, 0xc2, 0xdc, 0xf9, 0xda, 0x78, 0xe6, + 0x28, 0x9c, 0xa9, 0xcd, 0x6c, 0x9d, 0xf5, 0x49, 0x26, 0xa9, 0x73, 0x7c, + 0x27, 0x6e, 0x4e, 0xb4, 0x09, 0x65, 0x91, 0xd9, 0x0c, 0x2f, 0x4b, 0xd0, + 0x97, 0xa8, 0x9a, 0x8d, 0x09, 0x43, 0x87, 0x97, 0x94, 0x0b, 0x79, 0x4e, + 0x8f, 0x83, 0x47, 0xb4, 0xa8, 0x0f, 0x52, 0x77, 0x05, 0x73, 0x6a, 0xda, + 0x50, 0x0b, 0xe9, 0x88, 0x07, 0x96, 0x56, 0x43, 0x7d, 0x64, 0x8d, 0x26, + 0x30, 0xe6, 0x3e, 0x42, 0xd6, 0xe1, 0x2a, 0x89, 0xe5, 0xb7, 0x3e, 0x02, + 0xa9, 0xe9, 0xfb, 0x4f, 0x2e, 0x92, 0xf4, 0xdf, 0xb2, 0x4a, 0xda, 0x57, + 0x6b, 0x26, 0x43, 0xb8, 0x4c, 0x8d, 0x19, 0xad, 0x0b, 0x61, 0x5a, 0xb3, + 0xf3, 0xeb, 0x82, 0x98, 0xea, 0xd3, 0x6a, 0x0b, 0x35, 0x6d, 0x9f, 0x98, + 0x42, 0x7f, 0xf9, 0x81, 0x28, 0xf7, 0x75, 0xf3, 0x43, 0xc7, 0x75, 0x6f, + 0xa0, 0x7b, 0x58, 0x53, 0x9b, 0x2a, 0xa4, 0xf0, 0xa8, 0x16, 0xe4, 0x4c, + 0xe4, 0x1f, 0xc3, 0x9c, 0x64, 0xce, 0x6c, 0x94, 0xff, 0x35, 0x77, 0x11, + 0xee, 0xa0, 0xca, 0x1e, 0xa2, 0x8b, 0xca, 0x54, 0x5a, 0xfc, 0x61, 0x8d, + 0xcd, 0xdb, 0x1d, 0xec, 0x80, 0xdb, 0x3e, 0xac, 0x60, 0x02, 0xdd, 0xe7, + 0xbb, 0xeb, 0xa7, 0xcf, 0x1b, 0x85, 0x2c, 0x5c, 0xe1, 0x67, 0x8f, 0x01, + 0x2b, 0xa5, 0x53, 0xf8, 0x7d, 0x1b, 0x99, 0x21, 0x57, 0xf9, 0xa4, 0x3f, + 0x0d, 0x27, 0x5a, 0x0f, 0xea, 0x97, 0x96, 0x01, 0xa6, 0x1f, 0xe7, 0xe5, + 0xe1, 0xe5, 0xdd, 0x9d, 0xcf, 0x76, 0x5a, 0x73, 0x97, 0x21, 0x42, 0x04, + 0x05, 0xe9, 0x1c, 0xe2, 0xa6, 0x88, 0xa6, 0x5a, 0x15, 0x37, 0xb1, 0xc1, + 0xa9, 0xf3, 0xa3, 0x35, 0x30, 0x63, 0xb3, 0xff, 0xb0, 0xad, 0x6b, 0xc0, + 0x72, 0x61, 0xaa, 0x01, 0xd5, 0xea, 0x12, 0x77, 0xd9, 0x8a, 0x87, 0x67, + 0x6f, 0xdf, 0x1e, 0x1f, 0x92, 0x2a, 0x76, 0x93, 0x43, 0x70, 0x74, 0x6e, + 0xcc, 0x36, 0xb3, 0xa8, 0x2f, 0xb5, 0x21, 0x03, 0xe0, 0xc5, 0x09, 0x24, + 0x78, 0xe7, 0x0c, 0xa8, 0xf1, 0x97, 0x16, 0xe2, 0xdc, 0x1d, 0xec, 0x06, + 0x5b, 0xb5, 0xb0, 0x91, 0x96, 0x9c, 0x68, 0x38, 0x6d, 0x8d, 0x9f, 0xb2, + 0x3e, 0x65, 0xce, 0x66, 0xf0, 0xa9, 0xce, 0xb2, 0x91, 0x80, 0x87, 0xcb, + 0xa0, 0x45, 0x5f, 0xb6, 0x96, 0x4c, 0x39, 0x43, 0xb2, 0x8b, 0xac, 0x8c, + 0x66, 0xaf, 0x61, 0x20, 0x91, 0x5b, 0x16, 0x85, 0x1e, 0x6b, 0x59, 0x98, + 0xb0, 0x80, 0xce, 0x2c, 0x81, 0x04, 0x26, 0x7a, 0x67, 0x5a, 0x6a, 0xd1, + 0x4c, 0x80, 0x68, 0xc3, 0xbe, 0xeb, 0xe2, 0xd6, 0x15, 0xf4, 0x9f, 0x7a, + 0x69, 0xdc, 0x77, 0xd4, 0x6b, 0xbc, 0xa0, 0x8e, 0x90, 0xab, 0x53, 0x08, + 0xc0, 0xae, 0x3b, 0x28, 0x95, 0x6d, 0xb7, 0xad, 0x73, 0xa9, 0x4e, 0x2d, + 0x59, 0x04, 0xce, 0x89, 0xe5, 0x92, 0x40, 0xe4, 0x65, 0x95, 0x29, 0x35, + 0xab, 0x48, 0xc3, 0x58, 0x2c, 0x32, 0x56, 0x19, 0x45, 0x4b, 0xe1, 0x69, + 0xa5, 0x7a, 0x09, 0x6c, 0x8a, 0xe7, 0x42, 0x46, 0xba, 0x56, 0x8e, 0x82, + 0xb2, 0xca, 0x21, 0x5c, 0x8e, 0x1e, 0x01, 0x20, 0x65, 0xbb, 0x9f, 0x38, + 0x12, 0x1f, 0xc5, 0x1e, 0x75, 0xa1, 0x71, 0x16, 0x63, 0xb8, 0xa6, 0xba, + 0xc1, 0xbf, 0x1d, 0x7b, 0xf4, 0x7c, 0x5b, 0x6b, 0xab, 0x23, 0x9f, 0x78, + 0x5d, 0x7e, 0xce, 0x6b, 0x2d, 0x85, 0x0c, 0xff, 0x70, 0x51, 0x3b, 0x1d, + 0x5a, 0xfc, 0x34, 0xcb, 0xb7, 0x21, 0xe0, 0x71, 0x09, 0xbe, 0x3c, 0x9b, + 0x1a, 0x74, 0x76, 0x0b, 0xe8, 0x21, 0x02, 0x8e, 0xec, 0xaa, 0xa0, 0xa6, + 0xd5, 0x16, 0xa2, 0xce, 0xd9, 0x99, 0x4f, 0xa3, 0x14, 0xd1, 0x51, 0x0b, + 0xad, 0x5a, 0xe5, 0xf3, 0x93, 0x79, 0x03, 0xb8, 0x8f, 0x9f, 0x00, 0xbc, + 0x9e, 0xf2, 0x75, 0x1c, 0x37, 0xc1, 0xd3, 0x56, 0xa6, 0xe8, 0x4a, 0xc0, + 0x1a, 0xa1, 0x30, 0xb0, 0x9d, 0x52, 0x4b, 0x03, 0xd5, 0x9b, 0x53, 0x9c, + 0xba, 0x45, 0xc0, 0x49, 0x2d, 0x0f, 0x49, 0x20, 0x45, 0xf2, 0xd2, 0x30, + 0x20, 0x2a, 0x05, 0x6b, 0xe3, 0xe2, 0xb6, 0x58, 0x0b, 0xcd, 0x5d, 0x8d, + 0xf6, 0xa6, 0xd1, 0x05, 0xc8, 0xfd, 0xd6, 0xaa, 0x40, 0x6e, 0x95, 0xe1, + 0x28, 0x99, 0x12, 0xab, 0xcd, 0xb9, 0x2d, 0x6a, 0xc0, 0x91, 0x36, 0x14, + 0x56, 0x07, 0xe0, 0xdf, 0xae, 0xf9, 0xa5, 0x83, 0x24, 0xea, 0x30, 0xb4, + 0x7f, 0x27, 0x4c, 0xfb, 0x12, 0x6d, 0xc4, 0xbd, 0xca, 0x95, 0x38, 0x68, + 0xa8, 0x6e, 0xac, 0x2d, 0x2e, 0x0a, 0x63, 0xaf, 0x6a, 0xd9, 0xe7, 0x2d, + 0xdb, 0x7c, 0x37, 0x4f, 0x1f, 0x70, 0x15, 0x34, 0xf1, 0x82, 0xdd, 0xbc, + 0x1f, 0x19, 0xd5, 0xee, 0x8b, 0xbd, 0xc1, 0xee, 0xf3, 0xcf, 0x06, 0xbb, + 0x3b, 0x83, 0xdd, 0xca, 0xe8, 0xa0, 0x20, 0x71, 0xc8, 0x5f, 0xd8, 0x4e, + 0xcb, 0x25, 0xda, 0x16, 0xbb, 0x12, 0x76, 0x30, 0x5b, 0x0d, 0x82, 0xc8, + 0xf5, 0x46, 0x17, 0x1a, 0xdd, 0xde, 0x62, 0x66, 0x71, 0x7e, 0x68, 0x25, + 0x35, 0x68, 0x07, 0x4e, 0x35, 0x0b, 0x36, 0x55, 0xc2, 0x1b, 0xbd, 0xf1, + 0xa7, 0xa5, 0x12, 0x52, 0x90, 0x26, 0x55, 0x29, 0x3c, 0xed, 0x22, 0xf2, + 0x5c, 0xff, 0xff, 0xc2, 0x71, 0x57, 0x34, 0x1a, 0x0e, 0x7c, 0x73, 0xc7, + 0x10, 0x7a, 0x8c, 0x8b, 0x8e, 0x05, 0xdf, 0x3f, 0x3f, 0xbb, 0xb8, 0xd4, + 0x04, 0x6d, 0x61, 0x07, 0x71, 0x71, 0x37, 0x70, 0xd1, 0x72, 0x88, 0xce, + 0xd5, 0xcb, 0xa5, 0x74, 0x50, 0x1d, 0xd6, 0xdc, 0xf1, 0xf9, 0x85, 0x47, + 0x51, 0x08, 0xee, 0x50, 0xb4, 0xe9, 0x32, 0x86, 0x59, 0xac, 0x45, 0x6b, + 0x7d, 0x52, 0xd9, 0x38, 0x47, 0x04, 0xaf, 0xc1, 0xce, 0x4b, 0x2b, 0x34, + 0xf5, 0xe0, 0x16, 0xfc, 0xda, 0x9f, 0xfe, 0xe4, 0x59, 0xd4, 0x90, 0x53, + 0xda, 0xb4, 0x22, 0x22, 0x6c, 0x9c, 0xcf, 0xbc, 0x7b, 0x5d, 0x00, 0x60, + 0xa2, 0xce, 0xfe, 0x8f, 0x48, 0x7c, 0xfb, 0xa9, 0xff, 0x23, 0xfd, 0xf9, + 0x53, 0xc7, 0x5d, 0x03, 0x50, 0xa8, 0xc4, 0xb3, 0xe8, 0x26, 0x2f, 0x1b, + 0x84, 0x9a, 0xb1, 0xa8, 0x3f, 0x2a, 0x57, 0x01, 0x6f, 0x17, 0xc7, 0x43, + 0xe2, 0x20, 0x0a, 0x46, 0x82, 0x07, 0xd4, 0x89, 0x0d, 0x3b, 0x45, 0x8a, + 0x94, 0x11, 0xa5, 0xb8, 0xb5, 0x44, 0x3a, 0x60, 0x6c, 0x10, 0x08, 0x78, + 0xb1, 0x67, 0xb8, 0x63, 0xec, 0x24, 0xbd, 0x17, 0xb6, 0x13, 0x1b, 0xc4, + 0x8a, 0xdc, 0x3f, 0x0c, 0xad, 0xa9, 0x2e, 0x5c, 0xf9, 0x60, 0xc3, 0xa5, + 0x84, 0x73, 0x3e, 0x16, 0xa9, 0xf8, 0x5c, 0x52, 0x4a, 0x0d, 0x49, 0x08, + 0x1e, 0x4b, 0x5c, 0xc0, 0x6c, 0x3a, 0x67, 0xbf, 0xb2, 0x59, 0x9f, 0xf2, + 0xb4, 0xb8, 0xe5, 0x19, 0x2a, 0x68, 0x41, 0x24, 0xc8, 0x1a, 0x1b, 0x81, + 0xa2, 0x8f, 0x91, 0x59, 0x5e, 0x2d, 0xc7, 0xeb, 0x9b, 0x9d, 0x33, 0xb8, + 0x05, 0xfe, 0x66, 0x64, 0xa6, 0x65, 0x87, 0xd4, 0x3f, 0x29, 0xe8, 0x7c, + 0x1e, 0xae, 0x34, 0x9b, 0x57, 0x8a, 0x65, 0x08, 0xca, 0x95, 0x41, 0xb9, + 0x35, 0xf2, 0xa9, 0x42, 0x60, 0x42, 0x97, 0x0a, 0x84, 0xa0, 0x85, 0x78, + 0x62, 0x48, 0x85, 0x9a, 0xd7, 0x0e, 0x5a, 0x0c, 0xa1, 0x32, 0x5b, 0x30, + 0x28, 0x2c, 0x03, 0x49, 0x07, 0xd1, 0x06, 0x7f, 0x58, 0x24, 0x71, 0x4e, + 0xdc, 0x8b, 0x5d, 0xc5, 0xc1, 0xe4, 0xfe, 0x17, 0x35, 0x0b, 0xa0, 0x54, + 0x06, 0xf6, 0xc5, 0xc8, 0xdb, 0xee, 0xb7, 0xed, 0xa1, 0x5c, 0x72, 0x1c, + 0x66, 0x0e, 0x16, 0x1d, 0xe7, 0xa3, 0xb4, 0xcc, 0x63, 0x8d, 0xb2, 0x57, + 0x84, 0x90, 0x40, 0xb8, 0xd0, 0x32, 0x1e, 0xc3, 0x75, 0x28, 0x21, 0x83, + 0xe8, 0x7f, 0xa1, 0x53, 0x7d, 0x5b, 0xec, 0x15, 0x48, 0x4d, 0xfd, 0xf2, + 0xf8, 0xf5, 0xd9, 0xc5, 0x71, 0x35, 0xa1, 0x53, 0xc0, 0x03, 0xa2, 0xb6, + 0x9a, 0x64, 0x9b, 0x28, 0x9d, 0xac, 0xc6, 0x12, 0x2b, 0xd5, 0x26, 0x40, + 0x04, 0xe7, 0xdf, 0x1d, 0x05, 0x27, 0xcf, 0x60, 0x56, 0xac, 0xd1, 0x5e, + 0xab, 0x57, 0x17, 0xfc, 0x73, 0x0b, 0xc5, 0xb0, 0x05, 0xdd, 0xc1, 0xc6, + 0x27, 0xf0, 0x39, 0x28, 0xe4, 0x65, 0x86, 0x19, 0x04, 0x72, 0x16, 0x05, + 0x3b, 0x25, 0x5c, 0xa3, 0x2d, 0xb0, 0xb9, 0xc4, 0xec, 0xa5, 0xf6, 0xa5, + 0x9a, 0x38, 0x62, 0x09, 0x4c, 0xe0, 0x68, 0x85, 0x41, 0xd4, 0xec, 0x48, + 0x61, 0x56, 0xa4, 0x97, 0x46, 0x49, 0x1a, 0xc1, 0x61, 0x63, 0xcf, 0xae, + 0x78, 0xb0, 0x4d, 0x61, 0x50, 0xac, 0x9d, 0x28, 0x04, 0xb7, 0x91, 0xaa, + 0xd2, 0x56, 0x03, 0xa0, 0xe5, 0xf6, 0x75, 0xeb, 0xab, 0x9d, 0x6f, 0x16, + 0x5b, 0x95, 0x6a, 0xdb, 0xb6, 0x78, 0x56, 0xd4, 0xf1, 0x4f, 0x5d, 0x6f, + 0x89, 0x6f, 0x41, 0xdc, 0x71, 0x60, 0xe8, 0x96, 0x82, 0xb7, 0x35, 0x70, + 0x1e, 0xff, 0xf6, 0x2a, 0x7e, 0x6e, 0xd6, 0x80, 0x8b, 0x68, 0x2d, 0xe7, + 0xad, 0x02, 0x82, 0x01, 0x4d, 0xda, 0x49, 0x36, 0xe8, 0x44, 0x0d, 0x8c, + 0xb0, 0x76, 0x14, 0xf0, 0xb8, 0x0d, 0xec, 0xc9, 0x27, 0x95, 0xba, 0xfa, + 0x95, 0x23, 0x85, 0x6e, 0xff, 0xc1, 0x3c, 0xe3, 0x48, 0x7c, 0x8f, 0x8a, + 0xd5, 0xbc, 0x84, 0xd0, 0x24, 0x49, 0x85, 0xe3, 0x2c, 0xcf, 0x9b, 0x46, + 0x47, 0x14, 0xbb, 0x72, 0x9b, 0x86, 0x8c, 0x8a, 0x8b, 0xd7, 0x87, 0x2f, + 0x9e, 0xbd, 0x80, 0xe8, 0x87, 0xb2, 0x6a, 0x9a, 0x8f, 0xa6, 0xd1, 0x86, + 0x08, 0xe3, 0xf4, 0x43, 0x6e, 0xb0, 0x03, 0x6d, 0x49, 0xcd, 0x80, 0xa3, + 0x64, 0x2a, 0xf8, 0x14, 0xc3, 0xa0, 0x89, 0x41, 0xab, 0xe9, 0xb4, 0xed, + 0xf6, 0x5c, 0x57, 0x1d, 0xd8, 0x6e, 0x0d, 0x8c, 0x3e, 0x95, 0xd8, 0x37, + 0xad, 0x2e, 0x6a, 0xea, 0x12, 0x69, 0xe8, 0x73, 0x68, 0x33, 0xba, 0x89, + 0x3d, 0x47, 0x75, 0xae, 0x6a, 0x6b, 0xd1, 0xd6, 0xdc, 0xdf, 0xaa, 0xe7, + 0xb9, 0x56, 0x79, 0x02, 0x07, 0xa0, 0x52, 0x6d, 0x7c, 0x00, 0x8f, 0x02, + 0xeb, 0x01, 0x6d, 0x86, 0x12, 0x35, 0x62, 0x99, 0x33, 0x86, 0xc3, 0x19, + 0x3c, 0x79, 0xb5, 0xf4, 0xd7, 0xac, 0xdd, 0x7c, 0x73, 0x9d, 0x2f, 0x24, + 0xe1, 0xb1, 0x0d, 0xa0, 0x36, 0x8c, 0x83, 0x91, 0x47, 0x8d, 0xd8, 0x51, + 0x73, 0x03, 0x56, 0x0b, 0xbc, 0x7b, 0x72, 0xe4, 0xea, 0x9c, 0xfb, 0x68, + 0x9e, 0xd1, 0xaa, 0xbd, 0x39, 0xf7, 0x18, 0x88, 0xcd, 0x33, 0x45, 0xd7, + 0x94, 0x97, 0x9a, 0x47, 0x96, 0x28, 0x8f, 0xef, 0xda, 0x9b, 0xd3, 0x56, + 0x44, 0x99, 0x94, 0x36, 0xac, 0x61, 0x04, 0xaa, 0x5a, 0xa5, 0x39, 0xde, + 0x18, 0x4e, 0xf4, 0xb6, 0x6e, 0x9a, 0x35, 0x0b, 0x6f, 0x48, 0x08, 0x17, + 0x41, 0xfc, 0x83, 0x6b, 0x31, 0x83, 0x69, 0xd0, 0xb0, 0x1a, 0xd5, 0xbd, + 0x56, 0x84, 0xf5, 0xcf, 0xd1, 0xce, 0x28, 0x15, 0xf0, 0xaa, 0x26, 0x29, + 0xd7, 0xad, 0x24, 0xa2, 0xa4, 0xa1, 0x79, 0xbc, 0x19, 0x4e, 0x61, 0x1e, + 0x65, 0xe3, 0x32, 0x98, 0x01, 0x3f, 0xd0, 0xde, 0x9c, 0x8a, 0x06, 0xcd, + 0x99, 0xb1, 0x9f, 0x05, 0x69, 0x4c, 0x8f, 0xcf, 0x4c, 0x1e, 0x6c, 0x6c, + 0x32, 0x7d, 0x28, 0xac, 0xa8, 0xb1, 0xc3, 0xeb, 0x67, 0xd6, 0xb6, 0xc3, + 0x18, 0x41, 0x7d, 0x83, 0x7d, 0x8a, 0x15, 0x1e, 0xef, 0xb7, 0x37, 0xe7, + 0x76, 0x18, 0x4f, 0x3e, 0xba, 0xc1, 0xda, 0x4b, 0x63, 0x15, 0xa6, 0x73, + 0x85, 0xc6, 0x7c, 0x2f, 0x08, 0x01, 0x9c, 0xf7, 0x5f, 0xbe, 0x7f, 0x7c, + 0x41, 0xa6, 0x73, 0x83, 0xd2, 0xe2, 0xe4, 0x76, 0x7f, 0x70, 0x35, 0x2e, + 0x2f, 0xae, 0x82, 0x6c, 0x45, 0x62, 0x5e, 0x58, 0x43, 0xf6, 0xbe, 0x3f, + 0x8f, 0xbd, 0xb4, 0xc8, 0x52, 0xc9, 0xc5, 0x57, 0xb4, 0xa0, 0xa8, 0x32, + 0xc4, 0xa8, 0x0d, 0xa3, 0x27, 0x88, 0x25, 0x6e, 0x4c, 0x71, 0x76, 0xcb, + 0x8e, 0x15, 0x77, 0xbb, 0xbd, 0x5f, 0xaf, 0xc3, 0x80, 0x8e, 0xe5, 0x71, + 0x4f, 0xc7, 0x32, 0x2b, 0xa7, 0x9c, 0xbb, 0x8c, 0xf3, 0x0f, 0xef, 0x76, + 0xb5, 0x4b, 0x77, 0x26, 0xeb, 0xe3, 0x5b, 0xdc, 0x4f, 0xac, 0x73, 0xfe, + 0xd5, 0x3a, 0x0e, 0x01, 0x92, 0xe3, 0x51, 0x91, 0x4d, 0x97, 0xa5, 0x44, + 0xeb, 0x49, 0x63, 0x57, 0x26, 0x20, 0xae, 0x59, 0x0a, 0xc4, 0xa7, 0xda, + 0xdd, 0xbe, 0x3e, 0xa9, 0x3a, 0x17, 0x44, 0x75, 0x03, 0x0c, 0xc3, 0x76, + 0xac, 0x5f, 0x1c, 0x7d, 0xda, 0x0f, 0x51, 0x00, 0xbf, 0x3d, 0xf3, 0xca, + 0x5b, 0x16, 0x68, 0x3d, 0xc3, 0xd3, 0x5e, 0x6b, 0x07, 0x62, 0x92, 0x30, + 0xe6, 0x9e, 0x92, 0x02, 0x47, 0x27, 0x6a, 0x7d, 0x78, 0xe5, 0x7b, 0x8f, + 0x11, 0xd2, 0xda, 0x35, 0xce, 0x67, 0x1f, 0x38, 0xe4, 0xf4, 0x80, 0x9f, + 0x15, 0x43, 0x83, 0x05, 0xb3, 0x6a, 0x9c, 0x4c, 0x3d, 0xc6, 0x6b, 0x56, + 0x7e, 0xdd, 0x08, 0x2a, 0x54, 0xf8, 0xd8, 0x48, 0xf8, 0xc1, 0xb6, 0xc1, + 0x04, 0x40, 0x7e, 0xec, 0x84, 0x5f, 0x05, 0x9c, 0xb2, 0xbd, 0x39, 0x1d, + 0xae, 0x7f, 0x4f, 0x97, 0xa7, 0x67, 0x66, 0xb3, 0x89, 0x9a, 0xa1, 0x59, + 0x03, 0x6d, 0xd2, 0x86, 0x1d, 0xf0, 0x5f, 0xc4, 0x20, 0x58, 0xed, 0x98, + 0xce, 0x2b, 0xb1, 0x95, 0xd4, 0x63, 0x36, 0x03, 0x06, 0x4c, 0x7b, 0x0c, + 0xb9, 0xa4, 0x90, 0x85, 0x48, 0xff, 0x6e, 0xdb, 0x05, 0x2d, 0x40, 0xd0, + 0x86, 0xad, 0x5c, 0xea, 0x7d, 0x88, 0x6a, 0xd7, 0x62, 0x06, 0xb3, 0x12, + 0x60, 0x31, 0x50, 0xed, 0xa8, 0x6b, 0x24, 0x2f, 0x0a, 0xa3, 0x94, 0x2c, + 0xc8, 0xc2, 0xf4, 0x31, 0x31, 0x1e, 0x39, 0x51, 0x58, 0x1e, 0x6f, 0x94, + 0xaa, 0xe1, 0xac, 0x0d, 0x29, 0x58, 0x5a, 0xad, 0x82, 0x36, 0xa8, 0x97, + 0xa9, 0xed, 0x27, 0xd7, 0x93, 0xbe, 0x12, 0x47, 0x95, 0x15, 0xf5, 0xf3, + 0x6d, 0x2c, 0x04, 0xa9, 0xbf, 0x2f, 0xf1, 0xe3, 0xf3, 0xb5, 0xb5, 0x17, + 0x87, 0xbe, 0x00, 0x63, 0x74, 0x21, 0xa1, 0x3f, 0xcc, 0x53, 0x19, 0x03, + 0x47, 0x15, 0xe8, 0x4d, 0xb6, 0xb5, 0x48, 0xad, 0x5e, 0x41, 0xc7, 0x1f, + 0x2f, 0xdb, 0x4a, 0x33, 0x6c, 0x59, 0x6d, 0x41, 0x34, 0xbd, 0x3b, 0xd8, + 0xed, 0x99, 0x6e, 0xa5, 0x52, 0x9c, 0x49, 0xc8, 0xfc, 0x49, 0xac, 0x29, + 0x3d, 0x11, 0xea, 0x27, 0xd6, 0xad, 0x63, 0x17, 0x12, 0xf2, 0xaa, 0x62, + 0x63, 0x58, 0x5e, 0x93, 0xab, 0x04, 0x3a, 0xa1, 0x9c, 0x91, 0x6c, 0x1a, + 0x54, 0xb4, 0xd3, 0x7f, 0xfa, 0xe2, 0x45, 0xe5, 0x5e, 0x0f, 0x95, 0xe0, + 0x67, 0x3b, 0x3b, 0x02, 0xef, 0x53, 0x7f, 0x8d, 0xbe, 0xe8, 0xbf, 0xc0, + 0x8b, 0xd5, 0xd7, 0x04, 0x04, 0x66, 0xfd, 0x7b, 0x7d, 0xfe, 0xa6, 0xa5, + 0x3b, 0x58, 0x70, 0xd6, 0xbe, 0xf5, 0x82, 0xbb, 0x6b, 0x79, 0x0b, 0x0f, + 0xcb, 0x3a, 0x66, 0x57, 0x57, 0x5c, 0xba, 0x9a, 0x9f, 0x14, 0x0c, 0xf0, + 0x2c, 0xbf, 0x8f, 0xf3, 0x49, 0x73, 0xba, 0x3b, 0xbd, 0xfe, 0xee, 0xba, + 0xe9, 0xba, 0x3a, 0x93, 0xd8, 0x4e, 0xd6, 0x84, 0x36, 0xff, 0xb8, 0xb5, + 0xf9, 0xf5, 0x56, 0xdb, 0xec, 0x3f, 0xdd, 0xd9, 0xe9, 0x3d, 0xe7, 0x9f, + 0x2f, 0x5e, 0xac, 0x8d, 0x31, 0xf1, 0x7d, 0x3c, 0xb1, 0xa9, 0x55, 0x46, + 0x4b, 0xed, 0xb4, 0xb4, 0xbe, 0x4b, 0xad, 0xee, 0xbe, 0x78, 0xd1, 0xe3, + 0x5e, 0x9e, 0x7d, 0x54, 0xeb, 0xe5, 0x7d, 0xe6, 0x4d, 0xe7, 0xfc, 0xba, + 0x27, 0xc7, 0xa2, 0x36, 0x03, 0xfa, 0x13, 0x51, 0x4c, 0x8c, 0x7a, 0x14, + 0x99, 0x77, 0x41, 0xcb, 0x50, 0xaa, 0x0f, 0x3e, 0xc0, 0x6d, 0x44, 0xa0, + 0xdf, 0x02, 0x79, 0x78, 0xd0, 0x14, 0x45, 0xfd, 0x88, 0xbd, 0x7f, 0xc1, + 0xfc, 0xf1, 0x1e, 0x51, 0xfb, 0x4c, 0x5c, 0x61, 0xd7, 0x8c, 0xb8, 0x64, + 0x59, 0x7a, 0x45, 0xb4, 0x49, 0xe4, 0xb2, 0x05, 0x5b, 0xc0, 0x5d, 0x3c, + 0x4d, 0x0d, 0xc9, 0x21, 0xea, 0xc2, 0x80, 0x25, 0xa8, 0x1c, 0xf4, 0x7b, + 0xb6, 0xe8, 0xa2, 0x5e, 0xce, 0x74, 0xe2, 0x34, 0x11, 0xf3, 0x4a, 0xc9, + 0x93, 0x7d, 0x79, 0x46, 0x0e, 0x1a, 0xd4, 0xb9, 0x87, 0x81, 0xe0, 0x11, + 0xb2, 0x77, 0xa8, 0xd6, 0x6b, 0xe4, 0x80, 0x91, 0x3c, 0xa2, 0xaf, 0x40, + 0xe1, 0xc2, 0x5c, 0xe5, 0xa7, 0xd9, 0x2d, 0x02, 0x04, 0x3c, 0x73, 0x18, + 0xcc, 0x03, 0x6f, 0xe0, 0x24, 0x31, 0x98, 0xe5, 0x1a, 0x0e, 0x8c, 0x7b, + 0x5f, 0xec, 0x31, 0x4b, 0x51, 0x44, 0xfd, 0x21, 0xfb, 0x01, 0x96, 0x33, + 0xcd, 0xdd, 0x92, 0xd4, 0x09, 0xd6, 0x4f, 0xef, 0xe3, 0x3c, 0xb1, 0xac, + 0x53, 0xd2, 0x9b, 0x8d, 0x03, 0x38, 0xa0, 0x55, 0xcd, 0x9c, 0xd4, 0xe4, + 0x71, 0x8f, 0x85, 0x60, 0x88, 0xd6, 0x12, 0xac, 0x34, 0x41, 0x3c, 0xa8, + 0x26, 0xd9, 0xb2, 0xed, 0x1f, 0x76, 0xba, 0x8a, 0x3b, 0xcc, 0xd0, 0xd6, + 0xcd, 0x42, 0x27, 0x38, 0x70, 0x1b, 0x35, 0x17, 0x18, 0x3f, 0x85, 0x64, + 0x58, 0xa0, 0x34, 0xb9, 0x12, 0xae, 0x6e, 0x16, 0x60, 0x47, 0xbc, 0x45, + 0x60, 0x4c, 0xb2, 0xf8, 0x06, 0x81, 0xa5, 0x05, 0xa3, 0x2d, 0xba, 0x48, + 0x20, 0xea, 0x00, 0xf8, 0x52, 0xd9, 0x31, 0xda, 0x2b, 0xc7, 0x04, 0x69, + 0xd3, 0xa2, 0xcd, 0x20, 0x6c, 0x11, 0xb4, 0x15, 0xe8, 0xfc, 0x86, 0xa8, + 0x9a, 0x49, 0x0c, 0xde, 0xd6, 0x40, 0x06, 0x00, 0xa3, 0xad, 0xec, 0x04, + 0x00, 0x79, 0xc2, 0x2d, 0x4d, 0x1e, 0x4a, 0x40, 0x62, 0xe3, 0x49, 0xbb, + 0x9c, 0x87, 0x27, 0xff, 0xfb, 0x78, 0xf0, 0x6b, 0x58, 0x93, 0xeb, 0x91, + 0xe7, 0x79, 0x7c, 0xef, 0xd1, 0x21, 0xd4, 0x5b, 0xec, 0x02, 0xdf, 0xe2, + 0xe9, 0xd4, 0xd7, 0xb9, 0x87, 0xdf, 0x8f, 0x84, 0xfd, 0xcc, 0xd0, 0xe2, + 0x5d, 0x0d, 0xfb, 0xb5, 0xe8, 0xe2, 0x9c, 0xe1, 0x37, 0x41, 0x05, 0xe7, + 0xd0, 0xb0, 0xec, 0x40, 0x5f, 0x66, 0x70, 0xbf, 0x58, 0x45, 0xa9, 0x25, + 0x75, 0x82, 0x52, 0x6d, 0x75, 0xfb, 0x14, 0x0d, 0xb1, 0x01, 0xc6, 0x1e, + 0xc6, 0xc5, 0x5c, 0xf8, 0x94, 0x06, 0x9e, 0xf9, 0x1a, 0xe4, 0x0b, 0x04, + 0xa2, 0x8a, 0x0b, 0x3b, 0x2c, 0x6d, 0x6b, 0x76, 0x83, 0xc0, 0x38, 0x0e, + 0xe2, 0x47, 0xd6, 0x4d, 0x9b, 0x39, 0x8a, 0xd7, 0xb6, 0x8c, 0x67, 0x8b, + 0x96, 0x74, 0x17, 0xc9, 0xcc, 0x35, 0x84, 0x24, 0x56, 0x8e, 0x7c, 0x40, + 0x2a, 0x3a, 0x6b, 0x36, 0x17, 0xe4, 0xe0, 0x08, 0xe5, 0xd2, 0x8b, 0x70, + 0x44, 0xb8, 0x7e, 0xaa, 0xb9, 0x23, 0x24, 0x9c, 0xd3, 0x39, 0x7a, 0xc9, + 0xae, 0x0f, 0x84, 0x11, 0xec, 0xaf, 0xf1, 0xf7, 0x9d, 0x9b, 0xb3, 0x92, + 0xeb, 0x29, 0x2d, 0x89, 0x6e, 0x67, 0x81, 0x07, 0xe8, 0x4a, 0xae, 0x61, + 0x97, 0xae, 0x01, 0x7f, 0x8b, 0xf3, 0x61, 0x2d, 0x62, 0x2e, 0xa5, 0x51, + 0x0f, 0x4e, 0x30, 0xf8, 0x5e, 0x6f, 0xb9, 0xc7, 0x94, 0x5c, 0x15, 0x10, + 0x0b, 0x1f, 0xdf, 0x2c, 0xb6, 0xcc, 0xe9, 0xb7, 0x5e, 0x68, 0x74, 0x23, + 0x81, 0xda, 0xa3, 0x90, 0x68, 0xa2, 0xea, 0x72, 0xfe, 0xf1, 0x7d, 0x5a, + 0x24, 0x0a, 0x70, 0x31, 0x5d, 0x45, 0x3a, 0x69, 0xef, 0xc3, 0x6b, 0x84, + 0x1e, 0x3a, 0xc4, 0xfe, 0x43, 0xad, 0xca, 0x8a, 0x92, 0x3c, 0x11, 0x2a, + 0xab, 0xd0, 0x2e, 0x6d, 0x27, 0xe5, 0x78, 0x5b, 0x92, 0xb9, 0x23, 0x90, + 0x18, 0x4b, 0xfc, 0x77, 0x89, 0xf3, 0xe8, 0x4e, 0x1a, 0x28, 0xda, 0xae, + 0x76, 0x50, 0x58, 0x35, 0xed, 0xb2, 0x16, 0x76, 0xe1, 0xbd, 0x77, 0x41, + 0x22, 0x50, 0x8b, 0x99, 0xcb, 0xbc, 0x43, 0x6e, 0xb9, 0x5d, 0xb4, 0x82, + 0x2b, 0x6f, 0x5f, 0xa9, 0xef, 0xc6, 0x2f, 0x28, 0xe6, 0x0f, 0x5c, 0x16, + 0x2d, 0x39, 0x38, 0x52, 0xed, 0xc9, 0x8e, 0xbb, 0x0b, 0x93, 0xad, 0xa6, + 0xaa, 0x3a, 0x28, 0x17, 0x5d, 0xb6, 0xf6, 0xda, 0x3c, 0x20, 0x36, 0x0c, + 0x42, 0x42, 0x5e, 0x0d, 0xf0, 0x16, 0x49, 0xa1, 0x1f, 0x1f, 0x14, 0xe9, + 0x13, 0xa3, 0xd8, 0x55, 0x32, 0x61, 0xa3, 0x0c, 0x00, 0x54, 0xd1, 0xb2, + 0x16, 0x6b, 0x6a, 0x6e, 0x9c, 0x6e, 0xed, 0xe3, 0x71, 0x7f, 0xbb, 0x83, + 0x27, 0x5b, 0x95, 0x33, 0xc0, 0xfa, 0x08, 0x70, 0xb3, 0x9b, 0x2e, 0x75, + 0x26, 0x3a, 0x70, 0x9f, 0x14, 0xb8, 0x99, 0x88, 0xec, 0xe4, 0x83, 0x28, + 0x1a, 0x6e, 0xa2, 0x51, 0x7e, 0x12, 0x2d, 0x85, 0x35, 0xe3, 0x75, 0xd2, + 0xaa, 0xc5, 0xf1, 0x1a, 0x2e, 0xe6, 0x81, 0x69, 0xa5, 0x6b, 0xf0, 0x10, + 0x2f, 0x89, 0xca, 0xac, 0xcd, 0x7e, 0x4d, 0x77, 0x34, 0x2c, 0xdc, 0xcb, + 0xc5, 0xa0, 0x89, 0xe7, 0x1d, 0x54, 0xd4, 0xd2, 0xf7, 0xa9, 0xfb, 0x9d, + 0xd0, 0x5d, 0x8e, 0xcb, 0x52, 0xc3, 0xf0, 0x5d, 0xfd, 0xa2, 0xb4, 0x68, + 0xad, 0x7f, 0x03, 0xe7, 0x09, 0x7b, 0x01, 0xdc, 0x7c, 0x65, 0xba, 0xe2, + 0xe7, 0x92, 0x4c, 0xfe, 0x7d, 0x2e, 0x49, 0x28, 0xd8, 0x7e, 0x3d, 0x0f, + 0x9a, 0x1e, 0x3d, 0x7d, 0x78, 0x68, 0xee, 0x84, 0x87, 0x91, 0x96, 0x02, + 0x7c, 0xc2, 0xf0, 0x9f, 0x3d, 0x3c, 0x54, 0xbf, 0x5c, 0x03, 0x2d, 0x24, + 0xce, 0x54, 0xe6, 0x79, 0xa3, 0x4c, 0x12, 0x0c, 0x65, 0xb5, 0xe2, 0x96, + 0x75, 0x14, 0x01, 0xf5, 0x3e, 0x46, 0xe4, 0x79, 0xd3, 0xdb, 0x0e, 0xa9, + 0xdb, 0x55, 0x8a, 0xb2, 0x4c, 0x37, 0x4e, 0x3e, 0xbf, 0xa1, 0x13, 0x29, + 0x80, 0xc0, 0x4a, 0xf1, 0xda, 0xa0, 0x95, 0xed, 0x6a, 0x59, 0x27, 0xee, + 0x45, 0x96, 0x3d, 0x05, 0xf2, 0x6e, 0x99, 0x4e, 0xf9, 0x35, 0xe0, 0xd0, + 0x52, 0x0b, 0xbb, 0xb4, 0xfc, 0xe9, 0x7c, 0x59, 0x26, 0x85, 0xab, 0x19, + 0x1f, 0xd4, 0x5b, 0x6c, 0x5b, 0xf6, 0x29, 0x30, 0xb3, 0x24, 0x24, 0xaa, + 0x5e, 0xd4, 0x4e, 0xc7, 0xa5, 0xb0, 0x23, 0x8a, 0xb6, 0xa4, 0x24, 0xdb, + 0xc7, 0xab, 0x6d, 0x87, 0xd9, 0x05, 0x47, 0xeb, 0xf5, 0x94, 0x3c, 0xd0, + 0x6a, 0x4b, 0x94, 0x74, 0x84, 0x28, 0x07, 0x92, 0xb0, 0x99, 0x73, 0x5d, + 0x67, 0x39, 0x6d, 0xea, 0x6c, 0x10, 0x64, 0xaf, 0x36, 0x22, 0x6d, 0xa5, + 0x2b, 0x87, 0x77, 0xc9, 0xa5, 0x74, 0x1c, 0x4c, 0x74, 0x99, 0x95, 0x2a, + 0x1c, 0x68, 0x3c, 0xb7, 0x32, 0x9b, 0xc8, 0x8d, 0xfb, 0xb1, 0xcc, 0x94, + 0xbd, 0xf0, 0x18, 0x06, 0x27, 0xae, 0xac, 0x24, 0xac, 0x7b, 0x85, 0xd7, + 0x59, 0xf7, 0x1f, 0x29, 0x20, 0xdc, 0x58, 0xdc, 0x31, 0x33, 0xac, 0xb0, + 0x82, 0x70, 0xed, 0xdc, 0xcb, 0x22, 0x3e, 0x02, 0xe3, 0x69, 0x58, 0xe7, + 0xc5, 0x34, 0x49, 0x16, 0x32, 0x36, 0x87, 0x8e, 0x6d, 0x05, 0xa4, 0xe5, + 0xa4, 0x22, 0x15, 0x45, 0x89, 0x54, 0x65, 0xce, 0x75, 0x1c, 0x20, 0x82, + 0x2f, 0x0b, 0x6e, 0x1d, 0xab, 0xee, 0xd8, 0xce, 0x69, 0x36, 0x45, 0x64, + 0xb7, 0xa4, 0xcd, 0x35, 0xe5, 0xde, 0x6c, 0x4b, 0x31, 0x1c, 0xb7, 0xad, + 0x8e, 0xa8, 0x74, 0x33, 0x6a, 0xd5, 0x9f, 0x9b, 0xa5, 0x53, 0xa4, 0xd8, + 0x03, 0xc4, 0xb3, 0x44, 0x4a, 0x47, 0xa0, 0x0a, 0xb4, 0xcc, 0x08, 0x71, + 0x0b, 0x8a, 0xea, 0x36, 0x70, 0xbc, 0x47, 0x8a, 0x02, 0x61, 0x09, 0x1b, + 0xbc, 0x18, 0x49, 0x35, 0x35, 0xc4, 0x78, 0xd3, 0xa0, 0x5c, 0x14, 0x9d, + 0xa3, 0x46, 0x1e, 0xfb, 0xc0, 0x93, 0x48, 0xb3, 0xce, 0xc8, 0xbf, 0x8b, + 0x62, 0xb4, 0x0a, 0x58, 0xf1, 0x28, 0xd5, 0x7c, 0x10, 0xff, 0xf5, 0x52, + 0x0f, 0xaf, 0x5c, 0x62, 0x7a, 0x65, 0xb0, 0x56, 0x1b, 0x3a, 0x26, 0x23, + 0x65, 0x5c, 0x01, 0x5d, 0xa8, 0xd4, 0xd8, 0x30, 0x62, 0x28, 0x7f, 0x32, + 0x3e, 0x82, 0x9c, 0xed, 0x98, 0xa5, 0x74, 0x2e, 0xc6, 0xba, 0xc9, 0x20, + 0x0c, 0x3a, 0xb4, 0x2d, 0xfe, 0x18, 0xa0, 0x7b, 0xea, 0xb0, 0x47, 0xff, + 0x8d, 0x14, 0x62, 0xa0, 0x6c, 0x0a, 0xcf, 0x9a, 0xb4, 0xa0, 0xe4, 0xbe, + 0xcd, 0x38, 0x7a, 0x4a, 0xc5, 0xce, 0x2b, 0xdf, 0x8e, 0xbe, 0xd9, 0xc4, + 0xd2, 0x44, 0x3b, 0x96, 0x26, 0x46, 0x4d, 0xf4, 0x2a, 0x28, 0xee, 0x36, + 0x6c, 0xc4, 0xfd, 0xc1, 0xb7, 0x2a, 0xb1, 0x52, 0x72, 0x51, 0xb6, 0x78, + 0xc2, 0xc0, 0xda, 0xd9, 0x83, 0x0a, 0x07, 0x34, 0x4f, 0xa7, 0x05, 0xd1, + 0x17, 0x1b, 0x40, 0x6d, 0xa4, 0x0c, 0x17, 0x78, 0x69, 0x8c, 0xa9, 0x99, + 0xac, 0xa7, 0x79, 0xf1, 0x3a, 0x18, 0x0e, 0x5f, 0xf2, 0xd5, 0x93, 0x52, + 0x46, 0x9a, 0x11, 0xf1, 0xb2, 0x02, 0xec, 0x3b, 0x90, 0x7a, 0x19, 0x65, + 0x13, 0x6b, 0xcf, 0xe7, 0xf2, 0x83, 0xc0, 0x4b, 0xd1, 0x46, 0x0d, 0xef, + 0xd6, 0x31, 0xec, 0x8f, 0x61, 0x75, 0x35, 0x95, 0x6b, 0x1d, 0xd5, 0xea, + 0xb2, 0x32, 0xdd, 0xfe, 0xf3, 0x84, 0x5b, 0x70, 0x09, 0x1d, 0x2e, 0x42, + 0x5a, 0xdf, 0xbc, 0x21, 0x3e, 0x14, 0x4b, 0xda, 0xdf, 0x96, 0x29, 0x93, + 0xa8, 0x44, 0xd5, 0x1d, 0xa1, 0x14, 0x41, 0xa1, 0x09, 0x16, 0xd7, 0x10, + 0xf9, 0x34, 0xe6, 0x23, 0x77, 0x92, 0x41, 0x03, 0x92, 0x19, 0x68, 0x62, + 0x03, 0x43, 0xce, 0x05, 0xe8, 0xeb, 0x6c, 0x19, 0xe2, 0x07, 0xf6, 0x87, + 0x3c, 0x12, 0x6a, 0xb5, 0x8f, 0x36, 0xda, 0xee, 0x7e, 0x8f, 0x5b, 0xdb, + 0x97, 0x42, 0x4b, 0x5e, 0x9e, 0xc1, 0x70, 0x20, 0x77, 0xc8, 0x08, 0x0c, + 0xc0, 0x4c, 0xb0, 0x93, 0x1a, 0xe5, 0x14, 0x98, 0xc3, 0x56, 0xa2, 0xf9, + 0x8b, 0x6c, 0x7c, 0x5b, 0x3c, 0x15, 0x7d, 0xe7, 0x91, 0xb8, 0xe9, 0x40, + 0xbc, 0x66, 0xcf, 0xeb, 0xd9, 0xe1, 0x37, 0xc3, 0xa7, 0x1f, 0x0c, 0x98, + 0x5e, 0x5f, 0xe1, 0xf8, 0xd1, 0x90, 0xe9, 0x47, 0x4a, 0x8a, 0xb4, 0x08, + 0xc9, 0x5c, 0x5c, 0x29, 0xa7, 0x4b, 0xad, 0x40, 0x50, 0x01, 0x6b, 0x3a, + 0x69, 0xb6, 0x74, 0xa8, 0x65, 0x91, 0x8f, 0x1c, 0xee, 0x39, 0xc0, 0xc3, + 0x55, 0x23, 0x8b, 0x32, 0xe1, 0x3d, 0x11, 0x0c, 0xc3, 0xe4, 0x61, 0x3c, + 0x5d, 0x16, 0xe9, 0xdd, 0x6f, 0x5a, 0xcc, 0x5e, 0x56, 0x3d, 0xfe, 0xa7, + 0x96, 0x3d, 0xfe, 0xb8, 0x75, 0x6f, 0x30, 0x91, 0x5f, 0xb8, 0xee, 0x9f, + 0xb5, 0x40, 0x8f, 0xfd, 0xdf, 0xb1, 0xee, 0xcf, 0xfa, 0x0e, 0x42, 0xeb, + 0xe5, 0x2f, 0x4d, 0x17, 0xc0, 0x16, 0x3c, 0xd3, 0xf0, 0xea, 0x4d, 0xa8, + 0xae, 0x49, 0x18, 0x71, 0x6d, 0xf6, 0x83, 0x76, 0x1c, 0x2f, 0xa8, 0x69, + 0x5b, 0x1f, 0x3c, 0x31, 0x6e, 0xa7, 0x24, 0x36, 0x43, 0xf6, 0xaa, 0xbe, + 0x76, 0xff, 0xc4, 0xce, 0x39, 0x89, 0xc0, 0xef, 0x5d, 0xeb, 0xe6, 0x85, + 0x7b, 0x27, 0x97, 0xe6, 0xff, 0xd4, 0xce, 0xd5, 0xa4, 0xe5, 0xea, 0x2c, + 0x50, 0x44, 0xc4, 0xc6, 0x2e, 0x65, 0xab, 0xe9, 0x5e, 0x9c, 0xa2, 0x92, + 0x94, 0xc3, 0xaa, 0x72, 0x41, 0x74, 0x4d, 0xe4, 0x46, 0x25, 0x87, 0x4a, + 0x95, 0x62, 0xdd, 0x0d, 0x57, 0x34, 0x6f, 0xab, 0x41, 0x3c, 0xff, 0xcc, + 0x99, 0x35, 0x82, 0xe1, 0xe8, 0x58, 0x00, 0xa9, 0x19, 0x99, 0x08, 0x7d, + 0x79, 0x15, 0xbe, 0xcd, 0x76, 0x05, 0x60, 0x57, 0xab, 0x90, 0xf4, 0x41, + 0x92, 0xa9, 0x1c, 0xee, 0x16, 0x18, 0xdb, 0x75, 0x59, 0x29, 0xff, 0x47, + 0x1e, 0xec, 0x36, 0xf2, 0xb0, 0xc4, 0x90, 0x8f, 0x26, 0x0e, 0x17, 0xce, + 0xf9, 0x2f, 0x91, 0x47, 0xdb, 0x39, 0xdb, 0xd4, 0x18, 0x55, 0x5e, 0x26, + 0xe3, 0xf9, 0x5b, 0xbe, 0x64, 0x28, 0x90, 0x65, 0x71, 0xab, 0x9f, 0x9c, + 0x7f, 0xfb, 0x1c, 0x0e, 0xbd, 0x61, 0x13, 0x18, 0xea, 0xf4, 0xe8, 0xe0, + 0xbc, 0x85, 0x85, 0x5d, 0xd3, 0x2d, 0xbf, 0x48, 0xfb, 0xec, 0x03, 0x60, + 0xc1, 0xf4, 0xa5, 0xfe, 0xc2, 0x44, 0xd4, 0x26, 0x7a, 0x9b, 0x7e, 0x61, + 0xcf, 0x83, 0xfb, 0x29, 0xa6, 0x0c, 0x66, 0xa9, 0x2e, 0x1c, 0x16, 0xcb, + 0xc7, 0xb3, 0xc9, 0xb6, 0xfc, 0xd9, 0xbf, 0xfa, 0xdb, 0x64, 0x3e, 0x78, + 0x84, 0x56, 0xe2, 0x4a, 0x02, 0x87, 0x16, 0x51, 0x4a, 0x9b, 0x39, 0xe3, + 0xae, 0xb6, 0x63, 0xdd, 0x3d, 0xe5, 0x4e, 0x55, 0xa4, 0xe9, 0x68, 0x80, + 0x1f, 0x5a, 0x37, 0x4b, 0xfe, 0x74, 0x12, 0x29, 0xb0, 0x61, 0xd4, 0x4c, + 0xfa, 0xc1, 0xf7, 0xdb, 0xbe, 0xa5, 0x7f, 0xad, 0x37, 0x6b, 0x8f, 0x43, + 0xaf, 0xdb, 0x9a, 0x93, 0x51, 0x88, 0xac, 0x5c, 0x7b, 0x52, 0xb4, 0x7e, + 0x29, 0xdc, 0x8a, 0x0a, 0xbf, 0xfe, 0x8a, 0xe8, 0x2b, 0x2e, 0x67, 0x03, + 0x92, 0x43, 0x60, 0xd7, 0xcb, 0xb1, 0x65, 0x67, 0xa5, 0xf3, 0xf1, 0x22, + 0x16, 0x00, 0x87, 0xfa, 0x16, 0x3c, 0x8e, 0xb1, 0x58, 0x9d, 0xcd, 0x3c, + 0xa9, 0xc7, 0x1c, 0x1f, 0x14, 0x15, 0x34, 0x29, 0x79, 0x2e, 0xb2, 0xac, + 0x43, 0x6c, 0x2b, 0x2c, 0xa8, 0x5a, 0xfe, 0x0d, 0xd1, 0x5a, 0xb8, 0x89, + 0xe4, 0x91, 0x06, 0x06, 0x45, 0xe9, 0x40, 0x38, 0xa3, 0xfc, 0x6a, 0xbc, + 0xfb, 0xe2, 0xf9, 0x2e, 0x4b, 0xbd, 0xab, 0x42, 0xa0, 0xda, 0x0a, 0x6d, + 0xe6, 0xe9, 0xe0, 0xc9, 0xf6, 0xd3, 0xc1, 0xd3, 0xc8, 0xd7, 0x27, 0x18, + 0x25, 0xad, 0x69, 0xe9, 0xc9, 0x18, 0x90, 0x16, 0x23, 0x3d, 0x72, 0x6f, + 0x8f, 0x0f, 0xad, 0x72, 0x32, 0x12, 0xb5, 0xab, 0xd0, 0xac, 0x5a, 0xd9, + 0x97, 0x17, 0x4f, 0xca, 0x81, 0xb4, 0x23, 0xdb, 0xb7, 0x2e, 0x8b, 0xcf, + 0xb9, 0x47, 0xe8, 0xd6, 0x5c, 0xe7, 0x4c, 0xeb, 0x4a, 0x2c, 0xeb, 0x46, + 0x4b, 0x00, 0xb6, 0x44, 0xa3, 0xd6, 0xd7, 0x26, 0x58, 0xb9, 0xc1, 0x07, + 0x76, 0xa6, 0x9c, 0x10, 0x6f, 0x6d, 0x0f, 0x9c, 0xb8, 0x70, 0x15, 0xbf, + 0x88, 0x61, 0x70, 0x55, 0x63, 0x2d, 0x35, 0x24, 0xaf, 0x58, 0xcc, 0x64, + 0x25, 0x9a, 0xce, 0xfc, 0x3d, 0x6b, 0xc3, 0x66, 0x03, 0x48, 0x2f, 0x81, + 0xb4, 0x44, 0x81, 0x89, 0x6e, 0xbf, 0x6b, 0x57, 0x85, 0x39, 0x8c, 0x82, + 0x2a, 0xca, 0x86, 0x7a, 0xb6, 0xfe, 0xd0, 0x6b, 0x61, 0x1a, 0x44, 0x76, + 0x89, 0x5d, 0x87, 0x1d, 0x85, 0x0e, 0x0a, 0x90, 0x38, 0xca, 0x0d, 0x33, + 0x3d, 0xb5, 0xe2, 0x4c, 0x92, 0x71, 0x53, 0xc7, 0x72, 0x60, 0x37, 0xf4, + 0xfc, 0x38, 0x5e, 0xc4, 0xa3, 0x74, 0x9a, 0x96, 0x69, 0x4b, 0x88, 0xea, + 0xaf, 0x28, 0xfb, 0x95, 0xe3, 0x45, 0x7f, 0x9e, 0xb5, 0xd9, 0x08, 0x2f, + 0xb9, 0xf4, 0x4f, 0x00, 0xf8, 0xfc, 0xfe, 0xed, 0xd9, 0xd1, 0xf1, 0xe9, + 0xc1, 0x0f, 0x16, 0xf9, 0xe1, 0xc2, 0xef, 0x51, 0x3f, 0x39, 0x89, 0x8b, + 0xd5, 0xfb, 0x22, 0x29, 0xe9, 0xcb, 0xcd, 0x27, 0x5b, 0x6c, 0x85, 0xaf, + 0x5f, 0xb3, 0xac, 0x7e, 0x85, 0xf5, 0x40, 0xd4, 0x60, 0xeb, 0xe7, 0x51, + 0x23, 0x93, 0xdd, 0x8a, 0xb3, 0xad, 0xa4, 0xfb, 0xb5, 0x4c, 0xa6, 0xf3, + 0xa4, 0xd4, 0xe2, 0x0f, 0xd1, 0xcb, 0xb3, 0xf3, 0xcb, 0x57, 0x77, 0xf1, + 0xb4, 0xe1, 0x82, 0x62, 0xc8, 0x2d, 0x79, 0xa6, 0x30, 0x0a, 0x91, 0x37, + 0x83, 0x30, 0xde, 0xa1, 0x8b, 0x97, 0xb5, 0x27, 0xdb, 0x00, 0x5b, 0x2e, + 0x2f, 0x7f, 0x38, 0x3f, 0x7e, 0xf5, 0x92, 0x55, 0xe6, 0xcf, 0x59, 0xd1, + 0x57, 0x53, 0x09, 0x34, 0x68, 0x5e, 0xe7, 0xd5, 0xa2, 0x79, 0x7d, 0x7f, + 0x7f, 0x74, 0x32, 0x3c, 0x3f, 0x3d, 0x3b, 0x7c, 0xf5, 0xf2, 0x7b, 0x36, + 0xb0, 0x72, 0x51, 0x99, 0xe0, 0x5d, 0xf7, 0x99, 0x8b, 0x05, 0x6c, 0xa2, + 0x61, 0x1f, 0x7f, 0xf7, 0xfe, 0xf8, 0xed, 0xb7, 0xaf, 0x5e, 0xde, 0xc5, + 0x79, 0x8f, 0xe7, 0x27, 0x6f, 0x73, 0x52, 0x7f, 0x4b, 0xed, 0x91, 0xca, + 0x5e, 0x72, 0xfe, 0xcd, 0x68, 0x7a, 0x2b, 0x75, 0xa8, 0x50, 0xfc, 0xa9, + 0x11, 0x84, 0x73, 0x89, 0x5c, 0x05, 0x36, 0x5a, 0xf0, 0x6f, 0xd1, 0x97, + 0xa7, 0xdf, 0xb0, 0x8b, 0xd7, 0xdd, 0xcd, 0x88, 0xf4, 0x26, 0x32, 0xf9, + 0xfc, 0xd9, 0xee, 0xde, 0x56, 0x50, 0x56, 0x86, 0x03, 0x45, 0x68, 0xc4, + 0xb7, 0x0d, 0xa3, 0xc9, 0xcf, 0x86, 0xba, 0xec, 0x01, 0xdf, 0x61, 0xce, + 0x92, 0x5c, 0x1f, 0x01, 0x57, 0xcf, 0xe3, 0x39, 0x17, 0x13, 0x45, 0x98, + 0x1e, 0x47, 0x27, 0x95, 0x40, 0xd1, 0xe1, 0x20, 0x8e, 0x46, 0x2e, 0xfa, + 0xa5, 0x8f, 0xe8, 0x1e, 0xb0, 0x31, 0xdb, 0x6e, 0x68, 0x1a, 0x8e, 0xc6, + 0x7e, 0xb4, 0x13, 0xf2, 0xaf, 0x7d, 0x30, 0xda, 0x81, 0x20, 0x42, 0x68, + 0xb7, 0x4b, 0xae, 0x50, 0xb0, 0x60, 0xf7, 0xfd, 0x23, 0x71, 0x5f, 0x58, + 0x3f, 0x8f, 0xf5, 0x5d, 0x65, 0x56, 0x81, 0x0f, 0x56, 0xc9, 0xd4, 0xa1, + 0x0e, 0xbe, 0xbb, 0x38, 0x5d, 0xc3, 0xbe, 0x72, 0x2d, 0xab, 0x15, 0xe0, + 0x1f, 0x6a, 0x1c, 0x88, 0x6f, 0x18, 0x58, 0x83, 0x87, 0x6e, 0x3f, 0x62, + 0xab, 0x41, 0xff, 0x88, 0x13, 0x58, 0x32, 0x4f, 0x11, 0xd0, 0xe2, 0x6a, + 0x4f, 0x81, 0x16, 0x04, 0x79, 0x9a, 0xa6, 0x90, 0x22, 0x11, 0x7d, 0xdb, + 0x18, 0x02, 0xaf, 0xdf, 0xc6, 0x9a, 0x60, 0xd0, 0x48, 0xdc, 0x30, 0x8a, + 0xa7, 0x94, 0x09, 0xfa, 0x3a, 0xc6, 0x63, 0x99, 0xb8, 0xd5, 0x59, 0x28, + 0x1a, 0xd3, 0x46, 0x0b, 0x9c, 0xa7, 0x10, 0xd4, 0x0d, 0xc7, 0xe8, 0x95, + 0xae, 0x2a, 0x3d, 0xf6, 0xae, 0x1a, 0x85, 0x69, 0x44, 0x1a, 0x78, 0xc5, + 0xeb, 0x82, 0x84, 0xc6, 0xda, 0xf9, 0xc4, 0x2c, 0x31, 0x3a, 0xb3, 0x96, + 0xc1, 0x21, 0xfd, 0xd3, 0x55, 0x10, 0xba, 0x23, 0x1b, 0x1b, 0xa4, 0x45, + 0x34, 0xcc, 0xd6, 0x6c, 0x32, 0x1a, 0x38, 0x7a, 0x33, 0x42, 0x83, 0x94, + 0xc0, 0xfe, 0xab, 0xcd, 0xe1, 0x96, 0x92, 0xb1, 0x90, 0xdb, 0xf9, 0x3b, + 0x9f, 0xe8, 0xd6, 0x56, 0x81, 0x6d, 0x1d, 0x01, 0x3a, 0x75, 0xdb, 0x2f, + 0x54, 0xa7, 0xdf, 0x61, 0x20, 0x4f, 0xb5, 0x57, 0x02, 0xc6, 0xd3, 0x8e, + 0x1b, 0xdd, 0x52, 0x5c, 0x2a, 0xc9, 0x27, 0xd2, 0xc5, 0xad, 0x58, 0x94, + 0x12, 0x73, 0x1e, 0x1d, 0xa8, 0x4f, 0x3a, 0x41, 0x0d, 0xeb, 0x6a, 0x1f, + 0x83, 0x4e, 0x54, 0x41, 0x0b, 0x15, 0xfb, 0xe9, 0x56, 0x03, 0x57, 0x77, + 0x85, 0xa1, 0x87, 0xb6, 0x80, 0x30, 0x27, 0x9c, 0x87, 0x5a, 0x1b, 0x1a, + 0x82, 0x8c, 0xc0, 0x4a, 0x9a, 0x98, 0x08, 0x90, 0x1b, 0x90, 0x8e, 0x2e, + 0x85, 0x8b, 0x38, 0xdd, 0x0b, 0xae, 0x2c, 0x17, 0xc6, 0xa7, 0x15, 0x23, + 0xc4, 0x2e, 0xac, 0x6d, 0x42, 0x08, 0x6b, 0xc3, 0xde, 0x91, 0x4d, 0x6c, + 0x59, 0x54, 0xab, 0x64, 0x6a, 0x79, 0x37, 0xcc, 0x06, 0xfa, 0x97, 0x1e, + 0x88, 0x92, 0x61, 0x24, 0x5b, 0x12, 0xd6, 0x14, 0xdc, 0xbc, 0x7f, 0xd9, + 0x80, 0xf5, 0xe2, 0x17, 0x38, 0x7c, 0x21, 0x08, 0x27, 0x43, 0x08, 0x27, + 0xcf, 0x5d, 0x28, 0x49, 0x83, 0x7f, 0x21, 0xf5, 0x0e, 0x84, 0xb4, 0xe1, + 0x27, 0x59, 0x5b, 0x56, 0xa5, 0x73, 0x3d, 0xcd, 0x46, 0x23, 0x9a, 0x54, + 0xc7, 0x24, 0x52, 0x1a, 0x61, 0x9c, 0x5f, 0x43, 0x49, 0xeb, 0x19, 0xe6, + 0x9b, 0x3f, 0xac, 0x80, 0x0c, 0x46, 0x5f, 0xeb, 0xb2, 0x5d, 0xb4, 0x96, + 0x5e, 0xe6, 0x31, 0xe0, 0x01, 0xe6, 0x1b, 0xd6, 0x65, 0x15, 0xaf, 0x3c, + 0x3e, 0x8f, 0xac, 0xff, 0x3a, 0xc7, 0x2f, 0x57, 0x1c, 0x2f, 0xec, 0xae, + 0x4f, 0x65, 0x3e, 0x60, 0x39, 0x8a, 0xe3, 0x9a, 0xb6, 0x24, 0x9c, 0xf0, + 0x84, 0x69, 0x02, 0x9d, 0xbf, 0xf3, 0x28, 0x76, 0x7b, 0xfc, 0xef, 0xde, + 0x3f, 0x3a, 0x86, 0xd6, 0xcb, 0x78, 0xe9, 0x32, 0xf8, 0x92, 0x11, 0x52, + 0x0b, 0x83, 0x08, 0x6e, 0x41, 0x04, 0xe6, 0x90, 0x8d, 0xb5, 0xad, 0xa7, + 0xb3, 0xeb, 0x1f, 0x77, 0xfb, 0xbb, 0x3b, 0x3b, 0x3b, 0x3f, 0x0d, 0x16, + 0xbc, 0x74, 0x57, 0x68, 0x9e, 0xfe, 0x1d, 0x2c, 0xd2, 0x31, 0x87, 0x7d, + 0xd1, 0x66, 0xa6, 0x31, 0x37, 0xbd, 0x2d, 0xfd, 0x6d, 0x87, 0xd7, 0x67, + 0xce, 0x09, 0x6c, 0xad, 0x7c, 0xdc, 0x81, 0xb2, 0xd3, 0x91, 0xb8, 0x5a, + 0x6a, 0x01, 0x07, 0x96, 0xbb, 0x27, 0x4b, 0x89, 0xc8, 0x91, 0x88, 0x25, + 0x75, 0x13, 0xf3, 0x66, 0x13, 0xa9, 0x4a, 0x41, 0x3c, 0xbe, 0xf1, 0x7a, + 0xad, 0xd5, 0xbb, 0xf1, 0x6d, 0x22, 0xc8, 0x56, 0x1c, 0x17, 0x12, 0x54, + 0x30, 0xea, 0xb9, 0xe4, 0x18, 0x1c, 0x58, 0xa5, 0x7b, 0x39, 0xb7, 0x4d, + 0xb0, 0x6d, 0x3e, 0x66, 0x24, 0x7d, 0xf2, 0xd7, 0xc6, 0xe5, 0x5c, 0xcd, + 0x14, 0xab, 0xe0, 0x92, 0x48, 0x70, 0x46, 0x1d, 0xbd, 0xb7, 0x4d, 0x41, + 0xf7, 0xa6, 0x8e, 0xd0, 0xcc, 0x81, 0x84, 0x96, 0xfe, 0x9d, 0xc0, 0x7a, + 0x8f, 0xb2, 0x02, 0xde, 0x7a, 0x5d, 0xb4, 0x86, 0xf2, 0x53, 0x8c, 0xd3, + 0xf4, 0x37, 0x95, 0x5a, 0xd1, 0x2b, 0xba, 0x79, 0x7c, 0xc3, 0x62, 0xd9, + 0x2e, 0xd9, 0xad, 0x70, 0xb3, 0xfc, 0x6e, 0x89, 0xb9, 0xc3, 0xed, 0xd7, + 0xff, 0x41, 0x1b, 0xc6, 0x15, 0x3e, 0x1b, 0x15, 0xcf, 0x30, 0x55, 0x51, + 0x14, 0xa7, 0x49, 0xcc, 0x81, 0xf5, 0x66, 0xa6, 0xb9, 0x49, 0x1e, 0x44, + 0x60, 0x68, 0x42, 0x65, 0x88, 0x4f, 0x97, 0xbd, 0x26, 0xaa, 0xf7, 0x1d, + 0x0c, 0x0f, 0x4f, 0x4e, 0x2a, 0x0a, 0x31, 0x2f, 0xde, 0x80, 0xa3, 0x83, + 0xc4, 0xcd, 0x52, 0x70, 0x90, 0x14, 0x3b, 0x79, 0x30, 0xdc, 0x86, 0x9c, + 0xc2, 0x61, 0x99, 0x48, 0xa1, 0x66, 0x14, 0xfe, 0xb8, 0x48, 0x2d, 0x0e, + 0x36, 0x96, 0xfc, 0xc7, 0xe5, 0x9c, 0x25, 0x0a, 0x0e, 0x8c, 0xb9, 0x59, + 0xd2, 0x91, 0x2c, 0x3e, 0xd2, 0xf4, 0xf6, 0xb1, 0xf4, 0xf8, 0xdb, 0x93, + 0x5e, 0x4b, 0xc0, 0xdf, 0x79, 0xae, 0x71, 0x95, 0x12, 0xfa, 0x12, 0x49, + 0xb4, 0x1e, 0x63, 0xf7, 0xf3, 0xad, 0x21, 0x14, 0x98, 0xa1, 0xa0, 0x16, + 0x46, 0x8b, 0x2b, 0xc5, 0x40, 0xe4, 0x5a, 0xd0, 0xa6, 0x54, 0x4f, 0x28, + 0xea, 0xb5, 0x23, 0x9e, 0x56, 0xa4, 0x50, 0xab, 0x93, 0x15, 0xbd, 0xe4, + 0x7f, 0xf7, 0xad, 0x48, 0xd5, 0xba, 0xf2, 0xb3, 0x2e, 0x1b, 0xab, 0x59, + 0xd6, 0x2a, 0x04, 0xb7, 0x96, 0xeb, 0xf6, 0xf1, 0x82, 0x06, 0x83, 0xe8, + 0xcc, 0xed, 0x8b, 0x2f, 0x8c, 0x89, 0x36, 0xeb, 0x55, 0xfa, 0xd6, 0x15, + 0x37, 0x40, 0x0a, 0xee, 0x75, 0xaa, 0x84, 0xef, 0xc7, 0xb5, 0x69, 0xc6, + 0x45, 0xb6, 0x47, 0xe6, 0xa2, 0x3d, 0xd3, 0x4d, 0x3c, 0xcd, 0xe6, 0x5b, + 0xad, 0x4b, 0x85, 0xad, 0x22, 0x41, 0x93, 0xe3, 0x28, 0xc5, 0x7a, 0xe7, + 0x0a, 0x63, 0xb6, 0xc5, 0x01, 0x20, 0xf8, 0x05, 0x72, 0x2d, 0x97, 0xb5, + 0x39, 0x3f, 0xe9, 0x6b, 0x28, 0xb0, 0x56, 0x9f, 0x90, 0x8c, 0x4f, 0x29, + 0xee, 0x50, 0xc7, 0x76, 0x6a, 0x5b, 0x08, 0x1f, 0x99, 0x28, 0xc8, 0xe9, + 0x15, 0xf8, 0xb7, 0xe5, 0xa2, 0x36, 0x37, 0x0d, 0x3d, 0xd4, 0xf1, 0xd5, + 0x85, 0x4a, 0x24, 0xff, 0x0b, 0xce, 0x4b, 0xa8, 0xec, 0x8d, 0xb4, 0x12, + 0xa4, 0x4b, 0x15, 0x56, 0x8b, 0x82, 0x5c, 0xe3, 0x58, 0x99, 0x36, 0x68, + 0xaf, 0x80, 0xe4, 0xf7, 0x89, 0xe7, 0x2c, 0xa3, 0xfd, 0xce, 0x6f, 0x78, + 0x32, 0xde, 0x99, 0x05, 0xfc, 0xd7, 0x27, 0xc8, 0x46, 0xa1, 0x8b, 0x56, + 0x82, 0xfc, 0xff, 0xf7, 0xda, 0xef, 0xf5, 0xbb, 0xdf, 0x76, 0xaf, 0xfb, + 0x3c, 0xef, 0x97, 0x24, 0xf4, 0xad, 0xdb, 0xd7, 0x18, 0x42, 0xa4, 0x15, + 0xba, 0x68, 0x40, 0x16, 0x43, 0xed, 0xe2, 0x2b, 0xe7, 0x86, 0x96, 0xc8, + 0xc5, 0x41, 0x35, 0x11, 0x62, 0x2c, 0xa6, 0xd4, 0x24, 0x75, 0x6a, 0x94, + 0x03, 0x7d, 0x91, 0x94, 0x13, 0xc0, 0x37, 0x7c, 0xa0, 0x9a, 0x89, 0xa9, + 0x29, 0xe2, 0xf0, 0xaa, 0x24, 0xd9, 0x4b, 0x0a, 0x38, 0x87, 0x85, 0x18, + 0x88, 0x0a, 0x44, 0xf4, 0xb6, 0xc5, 0xe5, 0x09, 0x71, 0x92, 0x87, 0x18, + 0x05, 0x7b, 0x2e, 0x48, 0x29, 0x2c, 0x20, 0xa2, 0x21, 0xb7, 0x1f, 0xa8, + 0x89, 0xa0, 0x26, 0xa7, 0x60, 0x3d, 0x83, 0x6b, 0xac, 0xbd, 0xb4, 0xb0, + 0x18, 0x2e, 0x79, 0x2d, 0x21, 0xa3, 0x00, 0x81, 0xd8, 0xae, 0x92, 0xed, + 0x32, 0x9e, 0xde, 0x22, 0xb4, 0x78, 0x10, 0xbd, 0x91, 0x75, 0xf5, 0x85, + 0x9f, 0x1b, 0xf1, 0x1f, 0xa3, 0xe5, 0xf5, 0x35, 0x10, 0x56, 0x0f, 0xe4, + 0x06, 0x2a, 0x0c, 0x24, 0x05, 0x86, 0xc9, 0xee, 0xe7, 0x5d, 0x0d, 0xe4, + 0xec, 0xdc, 0xd0, 0x65, 0x4d, 0x8b, 0xc4, 0xe2, 0x50, 0x47, 0xeb, 0xc1, + 0x37, 0x32, 0x1d, 0x99, 0xfe, 0x7b, 0x51, 0xf7, 0x65, 0xfb, 0x4b, 0xa4, + 0xa0, 0x27, 0xe9, 0x9d, 0xd6, 0x02, 0x72, 0xea, 0x3f, 0xad, 0xe1, 0x4d, + 0x4a, 0x17, 0xda, 0xbc, 0x19, 0xbc, 0xa5, 0xc5, 0x05, 0xe1, 0x21, 0x90, + 0xa0, 0xf6, 0xb8, 0x75, 0x90, 0x7f, 0xb4, 0xfe, 0x0c, 0x36, 0x19, 0x69, + 0xc0, 0x57, 0x59, 0x03, 0x60, 0x42, 0x53, 0x00, 0xb5, 0xff, 0x47, 0x0b, + 0xcf, 0xa5, 0xc6, 0x2d, 0x44, 0x16, 0x02, 0xe5, 0x29, 0xe6, 0x98, 0x4c, + 0xaa, 0xf0, 0x45, 0x56, 0x54, 0xea, 0xa9, 0x4b, 0x89, 0xfd, 0x94, 0xb6, + 0x51, 0x44, 0xc5, 0xc4, 0x8b, 0x3f, 0x1e, 0x32, 0xd5, 0x2c, 0xc2, 0x5c, + 0x22, 0x57, 0x8b, 0xaa, 0xac, 0xbb, 0x1a, 0xcd, 0xe4, 0xe1, 0x4f, 0x4d, + 0x51, 0xa2, 0xda, 0xa0, 0x56, 0x3e, 0xc6, 0xad, 0xc9, 0x0f, 0x5a, 0xd5, + 0x4a, 0xb5, 0xaa, 0xf6, 0x9a, 0x48, 0x2a, 0x12, 0x99, 0x6e, 0x50, 0x3a, + 0x4e, 0x0e, 0xa9, 0x0a, 0xd1, 0x66, 0x33, 0xff, 0x67, 0xe5, 0xb0, 0x4a, + 0x63, 0x8f, 0x08, 0x62, 0x00, 0x38, 0x1c, 0xba, 0x20, 0x23, 0xc1, 0x55, + 0xb7, 0xb0, 0x3f, 0xc4, 0x15, 0x05, 0xa7, 0x22, 0xa8, 0x21, 0xd4, 0xac, + 0x56, 0x08, 0xe1, 0xa8, 0x52, 0xf5, 0x55, 0x0c, 0xca, 0xa2, 0x5b, 0x8b, + 0xbd, 0xcb, 0x65, 0x59, 0x18, 0xa2, 0x7b, 0x0a, 0x83, 0x56, 0x31, 0x68, + 0xab, 0xf8, 0xa1, 0x41, 0x76, 0x22, 0x96, 0xe9, 0x2e, 0x6a, 0x62, 0x1b, + 0xab, 0x10, 0xd6, 0x04, 0x27, 0xa0, 0x80, 0xea, 0x5d, 0x06, 0x47, 0x53, + 0x9a, 0x46, 0x31, 0xb3, 0x27, 0xf9, 0x04, 0x02, 0xf4, 0x4a, 0x0b, 0x28, + 0xa5, 0xa8, 0x5c, 0x33, 0xbf, 0xb5, 0xa0, 0x25, 0xc9, 0xb9, 0x49, 0xc6, + 0xcb, 0xb2, 0x6a, 0xc7, 0x0d, 0xc6, 0xa4, 0x31, 0xc9, 0x18, 0xd2, 0x26, + 0xce, 0x80, 0x02, 0x90, 0x76, 0x1c, 0x4c, 0xfa, 0x7e, 0x67, 0xcb, 0xe4, + 0x76, 0xa8, 0x35, 0xeb, 0x90, 0xb9, 0x41, 0xe4, 0x36, 0x64, 0x92, 0x54, + 0x61, 0x64, 0x40, 0xc1, 0x3d, 0xa9, 0xe1, 0xd4, 0xd6, 0x3d, 0x91, 0x5f, + 0xde, 0xda, 0xfb, 0x6b, 0xc9, 0xa1, 0x0a, 0x3a, 0x77, 0x49, 0x06, 0x9a, + 0x5e, 0x55, 0xac, 0x01, 0x67, 0x09, 0x7a, 0xce, 0x38, 0xe4, 0x3f, 0x04, + 0x4f, 0xb7, 0x57, 0x6d, 0xf1, 0xf7, 0x9b, 0x08, 0x60, 0x77, 0xcf, 0x03, + 0xf3, 0x0d, 0x33, 0x60, 0x7c, 0xa4, 0xcb, 0x99, 0x36, 0xd5, 0x88, 0xdb, + 0x7c, 0xf4, 0x94, 0x7e, 0x7c, 0xc3, 0x3f, 0xac, 0xf4, 0x39, 0xe3, 0xc5, + 0x99, 0xf9, 0xa2, 0x09, 0xfe, 0xc1, 0xe5, 0x11, 0xe5, 0xdc, 0x0f, 0x41, + 0x45, 0xaf, 0xf1, 0x4b, 0x9e, 0x3c, 0xf2, 0x0e, 0xcd, 0xed, 0x67, 0x76, + 0x20, 0x2e, 0xcb, 0x8c, 0x29, 0x71, 0x8c, 0x64, 0xa5, 0x19, 0xa3, 0x0b, + 0x3b, 0x82, 0xd1, 0x3f, 0xd5, 0x43, 0x55, 0xe0, 0x28, 0x29, 0x73, 0x49, + 0xd7, 0xc0, 0x99, 0xad, 0xef, 0x4f, 0x8a, 0xbf, 0xb5, 0xc2, 0x8e, 0x3e, + 0x3a, 0xb7, 0xc7, 0x4a, 0x48, 0x37, 0x70, 0x53, 0x6b, 0x0d, 0xf3, 0x52, + 0xd0, 0x62, 0x3e, 0xfb, 0xb8, 0x55, 0x3c, 0xe2, 0x5b, 0xc6, 0x6e, 0x61, + 0x87, 0xc7, 0xa7, 0x85, 0x8b, 0x45, 0xf2, 0xf2, 0x85, 0x8b, 0xf1, 0xb0, + 0x4a, 0x08, 0x8a, 0x20, 0xde, 0x3e, 0x38, 0x5c, 0x7a, 0x88, 0xe7, 0x03, + 0x73, 0xb9, 0x35, 0x53, 0xcb, 0x8c, 0x2e, 0xda, 0x7c, 0xe5, 0xaf, 0xb6, + 0x88, 0xae, 0xc9, 0x81, 0x20, 0xb2, 0xa3, 0xf3, 0x35, 0x49, 0xec, 0x13, + 0x12, 0x7b, 0xa6, 0x6c, 0xe1, 0x95, 0xf4, 0xbb, 0xdf, 0x35, 0x8a, 0xb1, + 0x17, 0xab, 0xf9, 0xf8, 0xe6, 0xe8, 0xed, 0x70, 0x5d, 0x22, 0x7b, 0x5a, + 0xb8, 0x68, 0x65, 0x0e, 0x2f, 0xe1, 0xa7, 0x49, 0x88, 0x63, 0xb6, 0x08, + 0xe9, 0x4f, 0xa3, 0x59, 0x5a, 0x00, 0x66, 0xce, 0xdf, 0x1e, 0x7f, 0x75, + 0x66, 0x3f, 0xd6, 0x2e, 0xf9, 0xa3, 0x2b, 0x7c, 0xca, 0x49, 0xea, 0x8f, + 0xe5, 0xfb, 0xdb, 0xe0, 0x5c, 0x9d, 0x35, 0xef, 0x85, 0x20, 0x82, 0x9c, + 0xf2, 0xeb, 0x42, 0x8b, 0x3d, 0x25, 0x49, 0x7c, 0x94, 0xaf, 0x43, 0x32, + 0xa0, 0xe3, 0xb6, 0xf7, 0xd5, 0x97, 0xcd, 0xdb, 0xea, 0xe8, 0xed, 0x9a, + 0xee, 0xf8, 0x9b, 0xbe, 0x25, 0xf1, 0xe9, 0x15, 0xad, 0xc5, 0x1d, 0x91, + 0x95, 0xd3, 0x72, 0xf2, 0xce, 0x4f, 0xec, 0x47, 0x65, 0xea, 0x76, 0x25, + 0xf2, 0x71, 0x17, 0x9a, 0x17, 0x8c, 0x12, 0xc0, 0xf3, 0x4c, 0x63, 0xba, + 0x26, 0xa3, 0x96, 0x4a, 0xd1, 0x81, 0xd5, 0xdf, 0xa1, 0x3b, 0x8a, 0x37, + 0xc4, 0xaf, 0xb2, 0x82, 0x8b, 0x5a, 0x51, 0x3a, 0xe4, 0x1f, 0x41, 0x7a, + 0x6f, 0xb2, 0x74, 0xe7, 0xc4, 0xac, 0xeb, 0x95, 0xfd, 0x7b, 0xba, 0xa4, + 0xe0, 0x98, 0x66, 0x19, 0x30, 0x7a, 0x29, 0xd7, 0xd1, 0xe7, 0x8d, 0x03, + 0x21, 0xa8, 0x47, 0x66, 0x15, 0x36, 0x27, 0x20, 0xee, 0x75, 0x36, 0xf0, + 0x38, 0xdc, 0x2c, 0x66, 0x15, 0xd3, 0x04, 0xf5, 0x04, 0x79, 0x9a, 0x82, + 0xa2, 0xd5, 0x08, 0x16, 0x25, 0xd9, 0xce, 0x3b, 0x27, 0x2c, 0xcc, 0x40, + 0xba, 0x8e, 0xb4, 0xcc, 0x67, 0x99, 0x3b, 0xfb, 0x30, 0xcb, 0xbf, 0x8a, + 0x2e, 0x20, 0xce, 0xee, 0x46, 0x70, 0xc1, 0x03, 0x9b, 0x6b, 0x1e, 0xec, + 0x66, 0xaa, 0x8a, 0xc8, 0xae, 0xee, 0x9a, 0xa4, 0xa2, 0x69, 0xc3, 0x41, + 0xa2, 0x7c, 0x6b, 0x4c, 0x25, 0xa2, 0xa0, 0x3a, 0xf2, 0x70, 0x07, 0xd6, + 0x31, 0xce, 0x33, 0x14, 0x03, 0x90, 0xe4, 0xec, 0x23, 0xb9, 0x7f, 0xbc, + 0x64, 0xc3, 0x15, 0x1c, 0x0f, 0x28, 0xd1, 0xd8, 0xda, 0xdc, 0x8a, 0xef, + 0xed, 0xce, 0x17, 0x66, 0x2e, 0xeb, 0x98, 0x35, 0xdd, 0x83, 0xf0, 0x69, + 0x65, 0x9a, 0xd8, 0x82, 0xcb, 0x6d, 0x29, 0x5a, 0x7c, 0x8c, 0xe2, 0x34, + 0x40, 0xc2, 0x1a, 0x4a, 0x93, 0x75, 0xbe, 0xe8, 0x77, 0x5a, 0x6f, 0xbf, + 0xa0, 0xe0, 0x5c, 0xa4, 0x50, 0xf1, 0x66, 0xed, 0x36, 0xf3, 0x9e, 0xf4, + 0x62, 0x3a, 0x12, 0x97, 0x94, 0x28, 0xd3, 0x72, 0x59, 0x36, 0xc2, 0x12, + 0x15, 0xa5, 0x02, 0x1e, 0x59, 0xe8, 0x08, 0xbc, 0xe0, 0xde, 0x6b, 0x0a, + 0x61, 0x8f, 0xcd, 0x81, 0x25, 0x22, 0x0b, 0xd5, 0xc6, 0x38, 0x02, 0x22, + 0x08, 0x43, 0x5d, 0xd5, 0xc5, 0x95, 0x03, 0xbe, 0xe8, 0xfd, 0xe8, 0x70, + 0x3b, 0x79, 0xc4, 0xd1, 0x22, 0xfa, 0xfd, 0xdf, 0xed, 0x4b, 0xc0, 0xb2, + 0xfc, 0xc3, 0xd6, 0xcb, 0x8a, 0xc1, 0xb5, 0x4b, 0xdd, 0xbf, 0xf7, 0x36, + 0x19, 0x59, 0x19, 0x64, 0xca, 0x72, 0x73, 0xbf, 0x77, 0x55, 0x72, 0x5d, + 0x13, 0xd1, 0x3c, 0xb9, 0x17, 0x49, 0xa9, 0xa1, 0x13, 0x88, 0xa4, 0xf9, + 0x17, 0xae, 0x0a, 0x4d, 0xaf, 0x90, 0xc4, 0xc8, 0x8e, 0x7f, 0x49, 0x84, + 0x13, 0xf2, 0xfa, 0x4b, 0xae, 0xa2, 0x3d, 0x09, 0x3e, 0x34, 0x70, 0x96, + 0x47, 0xe5, 0xf3, 0xa6, 0x14, 0xc2, 0x0e, 0xc9, 0x7d, 0xec, 0xc6, 0xef, + 0xfb, 0x02, 0xb9, 0xa3, 0xd4, 0xcd, 0xd3, 0xa5, 0x31, 0xdb, 0x67, 0x56, + 0x88, 0x78, 0xfe, 0x64, 0xaf, 0x1f, 0x28, 0xd3, 0xbd, 0x46, 0x5d, 0x4f, + 0xf6, 0x3c, 0xb2, 0x9c, 0x14, 0xd4, 0x8a, 0x64, 0x1a, 0xff, 0x7d, 0xa4, + 0xd5, 0xbf, 0xd8, 0x99, 0x25, 0x49, 0x5d, 0x13, 0xd3, 0x4a, 0x83, 0xe2, + 0xf5, 0xad, 0x7a, 0x5c, 0x2b, 0xf1, 0x04, 0xbb, 0xe3, 0xe4, 0x1b, 0x83, + 0x09, 0x90, 0x10, 0x91, 0xb6, 0x78, 0x03, 0x04, 0x52, 0x58, 0x81, 0x5d, + 0x69, 0x08, 0x6a, 0x34, 0xbc, 0x95, 0x6c, 0x30, 0x96, 0x9a, 0x8b, 0x50, + 0xcf, 0xbd, 0x73, 0x1e, 0x2e, 0x4c, 0xd6, 0x87, 0xfa, 0x8f, 0x17, 0xea, + 0xd0, 0x1a, 0x41, 0x92, 0xae, 0xd9, 0x85, 0x57, 0x76, 0x3a, 0x09, 0xce, + 0x8f, 0xd4, 0x5e, 0x8a, 0x5c, 0x64, 0xc2, 0xfe, 0xe3, 0xcd, 0xa9, 0x56, + 0xd4, 0x98, 0x3e, 0xfb, 0x74, 0xde, 0x23, 0x9d, 0xcf, 0xad, 0x06, 0x31, + 0x93, 0x24, 0x67, 0xc8, 0xb8, 0x5a, 0xbe, 0x9f, 0x9f, 0x18, 0x57, 0x22, + 0xd0, 0x6d, 0x7c, 0xbc, 0x57, 0x58, 0x26, 0xb4, 0x5e, 0x10, 0xad, 0x84, + 0xf9, 0x5a, 0x91, 0x97, 0x40, 0x72, 0x09, 0xd2, 0x80, 0xed, 0xaa, 0x6b, + 0x83, 0xfc, 0x8d, 0x1a, 0xe9, 0x42, 0x9f, 0x71, 0xe9, 0x2a, 0x24, 0x43, + 0x4c, 0xd3, 0xd8, 0xa3, 0x18, 0xc8, 0x14, 0x78, 0x70, 0x31, 0xac, 0xaf, + 0x2c, 0x2b, 0x93, 0xa8, 0xfb, 0x78, 0x73, 0x0e, 0xcf, 0x95, 0xf5, 0x92, + 0x75, 0x2b, 0x23, 0x00, 0xbd, 0xf5, 0x95, 0xa9, 0x2e, 0x88, 0xae, 0x88, + 0xd7, 0x38, 0x5b, 0xfc, 0xed, 0xd1, 0x9a, 0x54, 0xca, 0x28, 0xda, 0x34, + 0x14, 0x51, 0xb1, 0x9c, 0x6d, 0x29, 0xc8, 0xb7, 0xdd, 0x83, 0x0a, 0x9e, + 0xfd, 0xa1, 0xe6, 0x90, 0x07, 0xd3, 0x48, 0x51, 0x79, 0xda, 0x88, 0xee, + 0x64, 0x1b, 0xca, 0x7b, 0x49, 0xf2, 0x73, 0x9a, 0x83, 0x4b, 0xf9, 0x43, + 0xa1, 0x12, 0xcd, 0x7e, 0xea, 0x79, 0x24, 0x6e, 0x71, 0xa2, 0xe1, 0x0a, + 0xfb, 0x00, 0xd5, 0x42, 0x16, 0xe2, 0xd9, 0x27, 0x8a, 0x04, 0x06, 0xe3, + 0xba, 0xcb, 0x70, 0x92, 0x8b, 0xd4, 0x6e, 0xae, 0x59, 0x3a, 0xfd, 0x40, + 0x73, 0xd3, 0x54, 0x95, 0x2a, 0x88, 0x67, 0xcb, 0xd6, 0x03, 0x8c, 0x09, + 0x31, 0xe7, 0x64, 0x45, 0x7d, 0xf9, 0x81, 0xd2, 0x3a, 0x36, 0xa4, 0xea, + 0x44, 0x11, 0xa7, 0x5e, 0xd2, 0xeb, 0x66, 0xe8, 0x13, 0xf7, 0x6a, 0x19, + 0xe7, 0x1f, 0xd8, 0x45, 0xc9, 0x14, 0x45, 0x54, 0xad, 0x17, 0x22, 0x61, + 0xf9, 0x40, 0xf5, 0x16, 0x15, 0x0e, 0xda, 0x87, 0x5c, 0x25, 0x2d, 0xcb, + 0x5a, 0xd2, 0x70, 0xc3, 0xfa, 0xb8, 0x5c, 0x4d, 0xa7, 0x5f, 0x34, 0x28, + 0x06, 0xba, 0x75, 0xdd, 0x38, 0xf0, 0x32, 0x0b, 0x5b, 0x91, 0x90, 0xed, + 0xcd, 0x2c, 0x7f, 0xbc, 0x39, 0x25, 0xca, 0x8f, 0x98, 0x51, 0xbc, 0x58, + 0x68, 0x6f, 0x1f, 0xde, 0x84, 0xdf, 0x64, 0xbe, 0x5a, 0xa2, 0x91, 0x53, + 0xf9, 0x23, 0x9b, 0xf8, 0x36, 0x1b, 0x2d, 0x8b, 0x1b, 0x41, 0x56, 0xc8, + 0xa2, 0x0f, 0xf3, 0xac, 0xa0, 0xf8, 0x44, 0x6d, 0xd2, 0x8f, 0xd4, 0x8e, + 0x0c, 0x97, 0x81, 0x71, 0x25, 0x95, 0xa7, 0xfd, 0x0f, 0xad, 0x83, 0x44, + 0x29, 0x59, 0xfe, 0x21, 0x4f, 0x02, 0x82, 0x82, 0x4b, 0xba, 0xa6, 0xb3, + 0x48, 0xaa, 0xd7, 0xe0, 0x43, 0xa3, 0x4b, 0x0b, 0x6f, 0x59, 0x89, 0xe1, + 0xb4, 0x49, 0xfa, 0x75, 0xa0, 0x55, 0x01, 0xed, 0xe0, 0xf0, 0xd1, 0x0f, + 0x72, 0x86, 0x58, 0x83, 0xfc, 0x50, 0xdc, 0x21, 0x0f, 0xa0, 0x0e, 0xd4, + 0x19, 0x1b, 0x88, 0x98, 0x2d, 0x31, 0xb5, 0xf5, 0xe6, 0xd8, 0x6c, 0x22, + 0xd6, 0xe5, 0x3b, 0x00, 0x3f, 0xb4, 0x93, 0xa4, 0x05, 0x69, 0xae, 0x3b, + 0xf9, 0x80, 0x61, 0xe7, 0x75, 0xd6, 0xfc, 0xf1, 0xa0, 0x82, 0xe1, 0xe3, + 0xfd, 0x13, 0x87, 0x5b, 0xb8, 0xe5, 0x91, 0xd3, 0x2f, 0xfc, 0xa7, 0xe7, + 0x28, 0xaf, 0x07, 0x49, 0xf4, 0xe3, 0x48, 0x41, 0xea, 0x65, 0xb8, 0x8c, + 0xd1, 0x5a, 0x3e, 0x29, 0xc2, 0x17, 0xf9, 0x4b, 0xad, 0xeb, 0x7a, 0x1f, + 0x17, 0x1f, 0x1a, 0x5d, 0x2c, 0xda, 0x58, 0x75, 0x11, 0xc4, 0xfa, 0xa3, + 0x91, 0x32, 0x20, 0xea, 0x48, 0x8c, 0x5a, 0x1f, 0xc3, 0xd5, 0x35, 0x27, + 0x1c, 0xa9, 0xe0, 0x2e, 0x4c, 0x25, 0x58, 0xaf, 0x30, 0x3f, 0xf2, 0x83, + 0xd7, 0x78, 0x5b, 0xf2, 0x24, 0xc6, 0x8a, 0x91, 0x7f, 0xfc, 0xf1, 0xf9, + 0xd5, 0x79, 0x79, 0x80, 0x8d, 0x05, 0x48, 0xa9, 0xe6, 0xe1, 0x19, 0xe9, + 0xd1, 0xfa, 0xc0, 0x9a, 0x71, 0x0c, 0xa5, 0x5c, 0x82, 0xe1, 0x31, 0xaa, + 0x33, 0x08, 0xab, 0x7a, 0xd8, 0xcc, 0xd2, 0x6f, 0x91, 0x55, 0x74, 0x07, + 0x2a, 0x68, 0xc2, 0x8c, 0xf1, 0x61, 0xc8, 0x71, 0x24, 0x98, 0xf0, 0xf1, + 0x29, 0x93, 0x8f, 0x61, 0x72, 0x05, 0x6d, 0x61, 0x13, 0x61, 0x2f, 0xfd, + 0x39, 0x79, 0x6f, 0x40, 0x47, 0xa1, 0x70, 0xe0, 0xd3, 0xe3, 0x25, 0xae, + 0x53, 0x44, 0x1f, 0x96, 0xcf, 0xed, 0xe9, 0x96, 0x13, 0x88, 0xd6, 0x34, + 0xa4, 0x2a, 0xfa, 0xb8, 0xd6, 0xd6, 0x46, 0x81, 0xa1, 0x2d, 0xf5, 0x57, + 0x3c, 0xda, 0x96, 0x05, 0x40, 0xb8, 0x61, 0x41, 0xf4, 0xfd, 0xc0, 0x66, + 0xb5, 0x49, 0xc6, 0xe8, 0xd1, 0x15, 0x2c, 0x51, 0x66, 0x2d, 0x72, 0xd3, + 0xfa, 0xf1, 0x07, 0x7a, 0xe7, 0xe3, 0x3d, 0xc2, 0x9c, 0x68, 0x52, 0xdb, + 0x46, 0xb3, 0x2c, 0x4f, 0x32, 0xf1, 0xfb, 0xc0, 0x5d, 0xc7, 0xec, 0xf5, + 0x0b, 0x50, 0xa8, 0xe4, 0x99, 0x40, 0x2d, 0x25, 0x95, 0xa2, 0x58, 0xe6, + 0x82, 0x58, 0xfd, 0x61, 0x52, 0x72, 0xe7, 0xdf, 0xda, 0xe3, 0xf8, 0x5d, + 0x9e, 0xca, 0x82, 0x31, 0x6b, 0x70, 0x96, 0xd6, 0x8c, 0xca, 0xed, 0x27, + 0x16, 0xc4, 0x86, 0x65, 0x91, 0x73, 0xbf, 0xd2, 0xa8, 0xa4, 0xb5, 0x8f, + 0x18, 0x93, 0xa2, 0x4b, 0xbd, 0xe7, 0xe0, 0x6e, 0x1d, 0xd3, 0xa1, 0x7c, + 0xd4, 0xbf, 0xe4, 0x8f, 0x94, 0x1a, 0x6c, 0xa5, 0xf9, 0xa4, 0x58, 0xee, + 0x54, 0xaf, 0xa5, 0x74, 0x75, 0xd4, 0x16, 0xc1, 0x0b, 0xad, 0x62, 0xde, + 0x84, 0xa3, 0x24, 0x6d, 0xc0, 0x84, 0x38, 0xae, 0xae, 0xfa, 0x56, 0x6c, + 0x30, 0xdc, 0x25, 0xa9, 0xdb, 0x91, 0xfb, 0x06, 0xf9, 0xf1, 0xa9, 0xc1, + 0x80, 0x8c, 0xe1, 0x47, 0xf9, 0x38, 0xfe, 0xf1, 0x11, 0x09, 0xe7, 0x3c, + 0x06, 0xe3, 0xc1, 0x85, 0x1b, 0x03, 0x0d, 0xc1, 0x7f, 0x28, 0x0e, 0x33, + 0x50, 0xa7, 0x2a, 0x8d, 0x89, 0x57, 0x55, 0xfe, 0x39, 0xad, 0xa2, 0x39, + 0x0e, 0xeb, 0xee, 0x3d, 0x54, 0x16, 0xc9, 0xf8, 0x8e, 0x2b, 0x44, 0x8e, + 0x65, 0x74, 0x35, 0x82, 0x98, 0x97, 0xf6, 0xc5, 0xe5, 0x8c, 0x21, 0x7d, + 0x68, 0x1c, 0x3a, 0x19, 0x2d, 0x9c, 0x64, 0xfa, 0xba, 0xd6, 0x7a, 0xe2, + 0xf4, 0x71, 0xa8, 0x84, 0x63, 0x4e, 0xd7, 0x63, 0x25, 0xfc, 0x03, 0x97, + 0xad, 0x6b, 0x50, 0xf3, 0x9f, 0x00, 0x48, 0x20, 0x09, 0x60, 0x8d, 0x3c, + 0xd4, 0x66, 0xe6, 0xf6, 0x15, 0xe9, 0x85, 0xc0, 0x3b, 0x7d, 0x0f, 0x58, + 0x50, 0xa6, 0x39, 0xc3, 0xe9, 0xc7, 0x07, 0x66, 0x35, 0x17, 0x7c, 0xb6, + 0xe5, 0x42, 0x8a, 0x3f, 0x32, 0x0e, 0x43, 0x06, 0x8b, 0xf7, 0x87, 0x8a, + 0x7f, 0xb6, 0xd4, 0x1f, 0xb0, 0x18, 0xfb, 0x5a, 0x56, 0x79, 0x53, 0xbb, 0x2b, 0x8a, 0xe9, 0x7b, 0x7a, 0x32, 0xbd, 0x5a, 0xbd, 0x17, 0x16, 0xff, 0xe1, 0x2b, 0x54, 0x9e, 0xb3, 0x93, 0xc2, 0x2e, 0x15, 0x3a, 0xc3, 0x24, 0xdf, 0x25, 0x24, 0x8d, 0x5d, 0x89, 0xe1, 0x35, 0x42, 0x93, 0xe9, 0xf8, 0xa3, 0xb4, 0x3f, 0xa7, 0x15, 0xbb, 0x33, 0x37, 0x60, 0xf8, 0x22, 0x78, - 0x80, 0x61, 0x57, 0xd3, 0xb6, 0x3e, 0x2c, 0x63, 0x71, 0x23, 0x1e, 0x95, - 0xfd, 0x31, 0xf1, 0xfb, 0xd7, 0x8b, 0x95, 0x70, 0x99, 0xa1, 0x1f, 0x57, - 0x87, 0xaa, 0x1a, 0xca, 0xef, 0x4b, 0x1e, 0xad, 0xcb, 0x8f, 0x46, 0x86, - 0xdc, 0x3f, 0x89, 0x29, 0xf0, 0xd1, 0xf9, 0xd0, 0xc9, 0x43, 0x2a, 0x50, - 0x2f, 0x6d, 0x29, 0x28, 0xca, 0x10, 0x8a, 0xa4, 0x6c, 0x4f, 0x0b, 0x7b, - 0x58, 0xb9, 0xb8, 0x7b, 0x99, 0x42, 0xce, 0x85, 0x51, 0xd6, 0xe4, 0xb3, - 0xa0, 0xcc, 0x8b, 0x20, 0x27, 0xc5, 0x1b, 0x2d, 0x6a, 0xa3, 0x8f, 0xc0, - 0x29, 0x24, 0xa1, 0x47, 0x5a, 0xef, 0x20, 0xd0, 0xdc, 0x46, 0xdc, 0x96, - 0x6c, 0x19, 0xfa, 0xfa, 0xe3, 0x69, 0x68, 0x3f, 0x0f, 0x14, 0x08, 0x85, - 0x1a, 0xe1, 0x48, 0x7e, 0x44, 0xc0, 0x05, 0xeb, 0xdf, 0x16, 0x73, 0x06, - 0xae, 0x4b, 0x4a, 0x06, 0x4d, 0x60, 0xba, 0x52, 0x9c, 0x52, 0xae, 0xfa, - 0x2c, 0xe6, 0x22, 0x7e, 0x57, 0x22, 0x26, 0x41, 0xa9, 0x16, 0xea, 0x47, - 0xdf, 0x37, 0x4d, 0xf0, 0xae, 0x8a, 0x96, 0x53, 0x61, 0x82, 0xe1, 0x49, - 0x28, 0x41, 0xa3, 0x00, 0x85, 0x33, 0x00, 0x36, 0x2b, 0x90, 0xe1, 0xea, - 0xe3, 0x9a, 0x98, 0x62, 0xec, 0xc3, 0x7a, 0xd5, 0xcb, 0x34, 0xd9, 0xe6, - 0xc0, 0xe6, 0x0c, 0xa4, 0x18, 0x5f, 0x62, 0xb1, 0x1e, 0xd8, 0x50, 0x2b, - 0xd0, 0xb5, 0xce, 0xf2, 0xe9, 0x8a, 0x8d, 0x48, 0x4b, 0x88, 0x56, 0xdc, - 0xed, 0x05, 0x74, 0x00, 0x15, 0xb8, 0x81, 0x2f, 0xea, 0xea, 0xd2, 0x34, - 0x40, 0x42, 0xd8, 0xd2, 0x13, 0xaf, 0x0c, 0xa3, 0x46, 0xda, 0x68, 0x25, - 0xc1, 0x5e, 0x10, 0xa2, 0x6b, 0xa5, 0xba, 0x5a, 0xcb, 0x9a, 0x5a, 0xf9, - 0x82, 0x4d, 0x0d, 0x3d, 0xdf, 0x72, 0xb1, 0x02, 0x09, 0x9d, 0x28, 0x70, - 0x03, 0xb8, 0x80, 0xfe, 0xf4, 0x68, 0x0c, 0xe1, 0xaf, 0xc4, 0x1a, 0xbe, - 0x47, 0x98, 0x90, 0x5c, 0x66, 0x6b, 0xab, 0x6b, 0x30, 0x19, 0x19, 0x6e, - 0x6e, 0x0a, 0x27, 0xea, 0x98, 0xb4, 0x07, 0xd2, 0x43, 0xec, 0x4d, 0x2d, - 0xd7, 0x18, 0xa6, 0x5c, 0x7d, 0x64, 0x91, 0x41, 0x50, 0xb7, 0x43, 0xdb, - 0xbf, 0xac, 0x70, 0x1e, 0x27, 0xa7, 0x0a, 0xd2, 0xd9, 0x9a, 0x3a, 0x02, - 0x61, 0xb6, 0x87, 0x2c, 0xbc, 0x8e, 0x06, 0x31, 0x10, 0xf7, 0x69, 0xa1, - 0x51, 0x57, 0x0a, 0x29, 0xa7, 0xe9, 0x5c, 0xf0, 0xff, 0x7f, 0x75, 0x7c, - 0xb9, 0xd5, 0x04, 0x30, 0x8a, 0x27, 0x7e, 0x64, 0x80, 0xb2, 0xd4, 0xf3, - 0x20, 0x3e, 0x51, 0xa8, 0x8a, 0x96, 0x40, 0x28, 0x8a, 0x4e, 0xf2, 0xb0, - 0x98, 0xc6, 0x73, 0xad, 0xaa, 0x56, 0x6b, 0xee, 0x90, 0x96, 0x81, 0x39, - 0x59, 0x10, 0x26, 0xa4, 0x5e, 0x77, 0x57, 0x71, 0xdd, 0x29, 0xdc, 0x48, - 0xd1, 0xe1, 0x16, 0x8f, 0x8e, 0x4f, 0x8f, 0x2f, 0x8f, 0x11, 0x41, 0xdd, - 0x10, 0x49, 0xa6, 0x28, 0x7e, 0x5c, 0x26, 0xe3, 0x9b, 0x79, 0x46, 0x77, - 0xaf, 0x84, 0x74, 0xd0, 0x4d, 0xff, 0x5d, 0x32, 0x3a, 0x3a, 0xf8, 0x56, - 0x42, 0x1a, 0x8a, 0xe8, 0xfc, 0xe2, 0xec, 0xfc, 0xf5, 0xc9, 0xdb, 0xa3, - 0x5e, 0x74, 0x78, 0x76, 0xfe, 0x43, 0x2f, 0x7a, 0x73, 0xf6, 0xed, 0x71, - 0x8b, 0x4f, 0x91, 0xfd, 0xd9, 0xcd, 0x8c, 0xb3, 0xd7, 0x6b, 0x76, 0x3b, - 0x44, 0xa4, 0xd4, 0xad, 0x0e, 0x12, 0x7d, 0x4e, 0x4f, 0x86, 0x97, 0xd8, - 0xfa, 0x7a, 0xbc, 0x17, 0x62, 0xda, 0x05, 0x78, 0x3d, 0x2d, 0x2c, 0x80, - 0x83, 0xab, 0x86, 0xfd, 0x76, 0x54, 0xbd, 0xe2, 0xf0, 0x1e, 0x96, 0xda, - 0x15, 0xfb, 0x8a, 0xff, 0x6d, 0xc1, 0x4c, 0x8c, 0xbd, 0xe6, 0xc1, 0xfe, - 0x5e, 0x2d, 0xf6, 0x73, 0x23, 0x79, 0x39, 0xf4, 0xb2, 0xe0, 0x34, 0x8d, - 0x6a, 0xf2, 0x7a, 0x34, 0x59, 0xe6, 0x4d, 0x89, 0x27, 0x8e, 0x82, 0x0e, - 0x25, 0x57, 0xa9, 0x57, 0x51, 0xda, 0xd8, 0xfb, 0x58, 0xf8, 0x82, 0x1e, - 0xd4, 0x7d, 0xf0, 0x42, 0xc3, 0xb1, 0x23, 0x88, 0x95, 0x21, 0x02, 0x59, - 0x38, 0x24, 0x9b, 0xf6, 0x2e, 0x29, 0xf8, 0x53, 0x86, 0x3b, 0xe2, 0x9b, - 0x48, 0x70, 0x88, 0x7e, 0x78, 0xbc, 0x94, 0xb1, 0x84, 0x18, 0x86, 0xbe, - 0x78, 0x61, 0x3e, 0x4b, 0x07, 0x8c, 0x89, 0xcb, 0x3c, 0x86, 0x0b, 0x28, - 0xc2, 0x9a, 0x34, 0xb5, 0x13, 0xd5, 0x0e, 0x24, 0xc8, 0x21, 0x48, 0x40, - 0x43, 0x44, 0x24, 0xdd, 0x2e, 0x72, 0x4a, 0x88, 0xeb, 0xf7, 0x24, 0x13, - 0x13, 0x90, 0xd5, 0xfa, 0x5e, 0xbf, 0xc5, 0x40, 0xc2, 0x82, 0xf3, 0x1a, - 0x7e, 0xfe, 0xeb, 0xd1, 0xc4, 0x0f, 0x8e, 0x26, 0x64, 0x0d, 0x5f, 0xe2, - 0x8f, 0x5f, 0x44, 0x15, 0x01, 0xa4, 0x97, 0xe8, 0x84, 0x9b, 0xe9, 0xbc, - 0x4a, 0x1e, 0xfd, 0x46, 0x56, 0xc3, 0x64, 0x4b, 0xcd, 0x4b, 0xc1, 0x6e, - 0xab, 0x5d, 0x87, 0xe5, 0xa2, 0x2a, 0x51, 0x54, 0x28, 0xa2, 0x45, 0x9c, - 0x91, 0x2d, 0x96, 0x70, 0xe1, 0x94, 0xa1, 0x98, 0xa5, 0xc2, 0x3c, 0x24, - 0x9f, 0xdf, 0x70, 0xe9, 0x7e, 0xe6, 0xcc, 0x67, 0x7a, 0xbc, 0x0f, 0xf2, - 0x7f, 0x39, 0x61, 0xf1, 0x99, 0x98, 0x9e, 0x86, 0x17, 0xad, 0x45, 0x18, - 0xdf, 0x22, 0x66, 0x2a, 0x1c, 0x3c, 0x56, 0xeb, 0x2d, 0x8b, 0x1f, 0x9c, - 0xa5, 0x3e, 0x62, 0xb4, 0x3f, 0xad, 0xdb, 0x31, 0xd1, 0xda, 0xf0, 0x58, - 0xe1, 0x96, 0x9b, 0x5f, 0x2b, 0x2d, 0x2b, 0x78, 0x23, 0x1f, 0x3f, 0x7a, - 0xdc, 0x55, 0xaa, 0x59, 0xd3, 0xa4, 0xda, 0x1a, 0xf9, 0xdb, 0x16, 0x7a, - 0x73, 0x10, 0xed, 0xe1, 0x34, 0x4c, 0x28, 0x40, 0x1d, 0x17, 0x04, 0x90, - 0x10, 0x53, 0xc3, 0x33, 0x12, 0x42, 0x50, 0x70, 0x97, 0x0d, 0xe5, 0x9a, - 0x0d, 0x73, 0x16, 0x11, 0xa9, 0x28, 0x11, 0x08, 0x5e, 0xf0, 0xc0, 0xb9, - 0x34, 0x4a, 0xb5, 0xc9, 0x1a, 0xec, 0xaa, 0x81, 0x14, 0xb7, 0x64, 0x70, - 0x68, 0x60, 0x82, 0x4f, 0x92, 0xd4, 0x30, 0x6e, 0xe5, 0xb3, 0xbf, 0x53, - 0x00, 0x4c, 0x5c, 0x73, 0x48, 0x7a, 0xa7, 0xb6, 0x78, 0x8c, 0x9c, 0xf0, - 0xbe, 0x26, 0xe3, 0xbd, 0x90, 0x94, 0xf7, 0xda, 0x64, 0xf5, 0x06, 0x6b, - 0x97, 0x9f, 0x84, 0xef, 0xd4, 0xde, 0x50, 0xdc, 0x6c, 0xd4, 0x85, 0xda, - 0xec, 0x6f, 0xb9, 0xb8, 0x49, 0x40, 0x8a, 0xca, 0x36, 0x37, 0xed, 0x21, - 0xb1, 0xb3, 0x4c, 0xb8, 0xc8, 0xdb, 0x6c, 0x3a, 0xf1, 0xe7, 0xc9, 0xb2, - 0x95, 0xb8, 0xb3, 0x6d, 0xb1, 0x7b, 0xba, 0xaa, 0x94, 0x45, 0x53, 0xfe, - 0x6e, 0x34, 0x36, 0x4f, 0xee, 0xc3, 0xc6, 0xbc, 0xec, 0xe0, 0x1a, 0xfc, - 0x2d, 0x43, 0xd0, 0x19, 0x83, 0x0f, 0x5a, 0x77, 0xd1, 0x8a, 0xca, 0xcb, - 0x29, 0xee, 0x01, 0x84, 0x9f, 0x69, 0x4c, 0x10, 0x54, 0x02, 0x1b, 0x73, - 0x5f, 0xac, 0x05, 0x20, 0x31, 0x43, 0x27, 0x6d, 0x4b, 0xbd, 0xee, 0x9f, - 0xd2, 0x31, 0x74, 0xb5, 0x4b, 0x74, 0xdc, 0xd5, 0x8a, 0xb3, 0x61, 0xa5, - 0x7a, 0x29, 0x5a, 0xca, 0xc9, 0x8a, 0xed, 0xd9, 0x3d, 0x20, 0x35, 0xd7, - 0x75, 0xc5, 0xe8, 0x1d, 0x75, 0x38, 0xbc, 0x7d, 0x54, 0x2c, 0xf3, 0xc9, - 0x72, 0xd6, 0x09, 0xb3, 0xe0, 0x75, 0x61, 0x98, 0x81, 0x36, 0x2b, 0xdc, - 0xf3, 0x25, 0x44, 0xbd, 0x3e, 0xdb, 0xa9, 0x59, 0xd0, 0x0d, 0x9f, 0x30, - 0x40, 0x24, 0xec, 0xef, 0x86, 0xf4, 0x43, 0xed, 0x35, 0x84, 0xc4, 0x92, - 0xef, 0xb5, 0xdf, 0x70, 0xf3, 0x76, 0x68, 0x31, 0x59, 0x00, 0xdf, 0x1d, - 0xec, 0xb4, 0x8b, 0xbb, 0x1c, 0xbd, 0x37, 0x4e, 0x7c, 0x71, 0xed, 0x94, - 0xd4, 0x57, 0x1e, 0x6d, 0xe1, 0x25, 0x37, 0x89, 0xcb, 0x70, 0x75, 0x88, - 0xf5, 0x90, 0xd6, 0xaf, 0x80, 0x2b, 0x57, 0x8d, 0xb7, 0x70, 0x5c, 0x01, - 0x69, 0xe9, 0x89, 0x98, 0xd3, 0xf7, 0x9d, 0xa8, 0x19, 0x0c, 0x6f, 0x97, - 0x59, 0xee, 0xb4, 0xb8, 0xdb, 0x6d, 0x2d, 0x61, 0x51, 0x1b, 0x1a, 0x4b, - 0x62, 0x97, 0xa7, 0x43, 0x17, 0x20, 0xbc, 0x2b, 0x22, 0xb8, 0xc3, 0x3f, - 0xf1, 0xb5, 0xeb, 0xd7, 0xd4, 0x66, 0xe7, 0x97, 0x55, 0x08, 0xf7, 0x43, - 0xd8, 0xe3, 0x0b, 0xb3, 0x98, 0xde, 0xed, 0xb5, 0x0e, 0xc1, 0xc6, 0x50, - 0x19, 0x04, 0x1b, 0x5a, 0x6c, 0x10, 0x7b, 0xcd, 0x41, 0x3c, 0x56, 0x1e, - 0x9e, 0x5f, 0x6d, 0x0c, 0xe1, 0x89, 0x0e, 0xe1, 0xc9, 0xc7, 0xae, 0x42, - 0x38, 0x80, 0x27, 0xbf, 0x74, 0x15, 0x5a, 0x87, 0xf0, 0x94, 0x03, 0xea, - 0x17, 0x77, 0x4f, 0x5b, 0x32, 0x7b, 0xcc, 0x26, 0x06, 0x56, 0x05, 0xb4, - 0x94, 0xa9, 0x14, 0xe3, 0xf4, 0x2e, 0x73, 0x2e, 0x43, 0x68, 0x05, 0x45, - 0x33, 0xef, 0x61, 0x3a, 0xa9, 0x57, 0x1c, 0xd4, 0x31, 0x7b, 0xe0, 0x6b, - 0x41, 0x81, 0xb9, 0xd2, 0x5f, 0x38, 0xc6, 0xb8, 0xaf, 0x3d, 0xd4, 0x8a, - 0x4c, 0x4b, 0x99, 0xdc, 0x35, 0xb1, 0xce, 0x48, 0x78, 0x14, 0x44, 0x33, - 0x2d, 0xa0, 0x93, 0x71, 0x5b, 0x4f, 0x6d, 0x50, 0x89, 0x04, 0x9e, 0x06, - 0xd3, 0x7d, 0x2e, 0xd3, 0x7d, 0xfe, 0x7f, 0xd3, 0x74, 0x9f, 0xaf, 0x9f, - 0xee, 0x27, 0x62, 0x55, 0x00, 0x66, 0x68, 0x7f, 0x14, 0xe7, 0x6b, 0x51, - 0x95, 0x2d, 0x5c, 0xd2, 0x01, 0x8c, 0x56, 0xc2, 0xfe, 0x0b, 0x41, 0x66, - 0x92, 0x6f, 0xa8, 0x99, 0xf5, 0xac, 0xa0, 0x22, 0xd1, 0x33, 0x54, 0x52, - 0x51, 0xa6, 0x63, 0xe6, 0x73, 0x5c, 0x0d, 0xc5, 0xc5, 0xf9, 0xfe, 0xf7, - 0xf6, 0xa0, 0xb5, 0x22, 0xe7, 0x51, 0xb3, 0x66, 0x66, 0x2f, 0x02, 0xa6, - 0x6e, 0x50, 0x7a, 0x33, 0x40, 0xb8, 0xa1, 0x76, 0x8f, 0xdf, 0x7e, 0x7b, - 0x72, 0x71, 0xf6, 0xf6, 0xcd, 0xf1, 0x5b, 0x17, 0x6d, 0x73, 0x89, 0xfa, - 0x83, 0x6d, 0x56, 0xb4, 0xb6, 0xba, 0x2b, 0x22, 0xff, 0xc2, 0x94, 0xc3, - 0x69, 0xb3, 0x8b, 0x85, 0xfe, 0x35, 0x08, 0x9b, 0x0b, 0x1e, 0xb2, 0xe3, - 0xc7, 0x42, 0xd9, 0x82, 0x7d, 0x03, 0x13, 0x8e, 0x71, 0x1b, 0x48, 0xe8, - 0x91, 0x2b, 0x9d, 0xce, 0xb6, 0xb7, 0x87, 0x71, 0xb2, 0xb0, 0xf5, 0xf3, - 0xf7, 0x89, 0x16, 0x6e, 0x0c, 0xa2, 0xd6, 0x2a, 0x83, 0xf0, 0x9b, 0x17, - 0x34, 0xf8, 0xa3, 0x19, 0xaf, 0xf6, 0xb7, 0xb7, 0x7f, 0x02, 0x0e, 0xe0, - 0xe7, 0x6a, 0xdf, 0x6c, 0x5e, 0xc9, 0xa1, 0x21, 0xc7, 0xd7, 0x06, 0xb1, - 0x3c, 0x3f, 0x58, 0xcc, 0x36, 0x02, 0x7f, 0xd6, 0xf0, 0x3d, 0xe9, 0xd2, - 0xdf, 0xff, 0xf0, 0x2b, 0x77, 0x31, 0xac, 0x94, 0xa4, 0xf8, 0xd5, 0xbb, - 0xa8, 0x68, 0xd7, 0x07, 0xa7, 0xa7, 0xbf, 0x6a, 0x07, 0x50, 0x39, 0xbc, - 0xbd, 0xb0, 0xef, 0xec, 0x85, 0x96, 0x24, 0xd9, 0x50, 0x66, 0x2b, 0xda, - 0xc9, 0xdb, 0x33, 0x1d, 0x8d, 0x98, 0x9b, 0xfa, 0x56, 0xed, 0x65, 0xe2, - 0x2a, 0x29, 0xf2, 0xc0, 0x1a, 0x38, 0xd5, 0xf8, 0x12, 0xa2, 0x93, 0x03, - 0xec, 0x34, 0xab, 0x2f, 0x50, 0xcb, 0x90, 0x92, 0x94, 0x39, 0xdb, 0xa2, - 0x40, 0x24, 0x9a, 0xd1, 0xba, 0xc5, 0x30, 0xcc, 0x20, 0x14, 0x1c, 0xd2, - 0x85, 0xfa, 0xbb, 0x9c, 0xce, 0xc5, 0x44, 0xa7, 0x68, 0xce, 0x25, 0x00, - 0xf2, 0x59, 0x11, 0xc0, 0x50, 0xf8, 0x14, 0x7d, 0x7f, 0x72, 0x19, 0x1d, - 0x9e, 0x1d, 0xf9, 0x23, 0x7a, 0x29, 0x81, 0x9c, 0x39, 0x4a, 0x26, 0x2d, - 0xe7, 0xc4, 0xc4, 0x58, 0x5d, 0x48, 0xaf, 0x80, 0x87, 0xe6, 0x60, 0xd1, - 0x11, 0x53, 0x67, 0x76, 0x22, 0x5a, 0x50, 0x29, 0xf8, 0x96, 0x4b, 0xa0, - 0xdc, 0x24, 0xb0, 0x22, 0x54, 0x41, 0x82, 0x9d, 0xa9, 0x96, 0xe3, 0xa6, - 0x19, 0x3c, 0x87, 0x58, 0x8a, 0x58, 0x1d, 0x88, 0xbb, 0x70, 0xe5, 0xb6, - 0xb9, 0x58, 0x93, 0x48, 0xb8, 0x3a, 0xf0, 0xba, 0x44, 0x80, 0x8a, 0x26, - 0x85, 0x70, 0x72, 0x14, 0x00, 0xd0, 0x82, 0xa3, 0x0f, 0x8c, 0xd0, 0x8e, - 0xd1, 0x54, 0xe2, 0x3e, 0x77, 0xd5, 0xee, 0x3f, 0xf7, 0x80, 0x1a, 0x1e, - 0xa3, 0x0a, 0xa6, 0x03, 0x4e, 0x94, 0x98, 0x58, 0xd2, 0x91, 0x81, 0x8c, - 0x59, 0x95, 0x14, 0x29, 0x7e, 0xdd, 0xd8, 0x71, 0xd7, 0x84, 0xeb, 0x67, - 0x4f, 0xa9, 0x5d, 0x90, 0xe4, 0x59, 0x9e, 0x12, 0xf7, 0x52, 0xfa, 0x73, - 0x70, 0xa4, 0x9f, 0xe8, 0x60, 0x2e, 0x4e, 0x69, 0xe6, 0x53, 0xb1, 0x83, - 0x6b, 0xcc, 0x37, 0x2a, 0xe4, 0xc0, 0x7b, 0xc2, 0xfa, 0xae, 0x16, 0x3c, - 0xf5, 0x6f, 0x3e, 0x33, 0x73, 0x9b, 0x92, 0x82, 0x47, 0xf2, 0x54, 0x2a, - 0x10, 0xd7, 0xae, 0x2a, 0x93, 0x4a, 0xa8, 0x12, 0x2c, 0x36, 0x86, 0xbb, - 0x4c, 0x6c, 0xdb, 0xcd, 0xda, 0x10, 0xb5, 0x38, 0x9c, 0xe7, 0xb5, 0x7e, - 0xac, 0x1b, 0x54, 0x23, 0x97, 0x22, 0x98, 0xe8, 0xa2, 0x1e, 0x70, 0xc5, - 0xcd, 0x37, 0x5b, 0xfb, 0xb4, 0xbe, 0x28, 0xbe, 0x6e, 0xbc, 0xb4, 0xe8, - 0x9e, 0xfc, 0xcc, 0x31, 0x8b, 0xe8, 0x3e, 0xe1, 0x9c, 0x28, 0x3d, 0x93, - 0xa8, 0x69, 0x64, 0xb3, 0xb3, 0xf8, 0x09, 0x49, 0x95, 0x04, 0xd0, 0x95, - 0xc6, 0x5b, 0x8e, 0x75, 0xbc, 0x0d, 0xfd, 0x30, 0x0f, 0x39, 0xea, 0x0b, - 0xdf, 0x49, 0x14, 0xc3, 0x45, 0xc5, 0xa6, 0xce, 0x79, 0xea, 0x36, 0x41, - 0xda, 0x97, 0x8f, 0xd8, 0xf3, 0x47, 0x9c, 0x39, 0x73, 0x7f, 0xeb, 0x1b, - 0x0d, 0x9c, 0xa2, 0x5a, 0x18, 0x14, 0xaf, 0x82, 0x54, 0xe3, 0x0b, 0x6b, - 0xf8, 0x21, 0x1a, 0x3e, 0x9e, 0xab, 0xdf, 0x42, 0x80, 0xda, 0x19, 0x9c, - 0x3b, 0x6b, 0xc4, 0x9c, 0x66, 0x57, 0xa5, 0xab, 0x10, 0xc4, 0x2a, 0xf5, - 0x24, 0x40, 0xb8, 0xc4, 0xa9, 0xf6, 0x8d, 0xe2, 0x0c, 0x99, 0x76, 0x0e, - 0x07, 0x52, 0xd4, 0x70, 0xcf, 0x05, 0xd5, 0x5e, 0xfd, 0x99, 0xd8, 0xad, - 0x2d, 0xf6, 0xf9, 0xc1, 0x70, 0x68, 0x4b, 0x0d, 0x14, 0x29, 0x5b, 0x4f, - 0x59, 0x41, 0xf5, 0x6c, 0x22, 0x63, 0x5a, 0x53, 0x0a, 0x5b, 0x0c, 0x19, - 0xda, 0x48, 0x2d, 0x3a, 0x62, 0xf7, 0x89, 0x5f, 0x73, 0xd7, 0xd9, 0xb7, - 0xd2, 0x5a, 0xef, 0x23, 0x3b, 0x6b, 0xed, 0xeb, 0xdb, 0x96, 0xbe, 0x9e, - 0xd6, 0xe6, 0xb5, 0xb7, 0xf7, 0xa9, 0xa6, 0x10, 0xd0, 0x5a, 0x1f, 0x56, - 0x28, 0x45, 0x89, 0x43, 0x6d, 0x0d, 0xf4, 0x60, 0xdf, 0xd0, 0x22, 0x92, - 0xd6, 0x6a, 0xd9, 0x18, 0x4c, 0xd0, 0xd5, 0x33, 0x3f, 0x2d, 0x92, 0x2a, - 0xb8, 0x3d, 0x36, 0x7b, 0xc8, 0x31, 0x69, 0x9c, 0x1e, 0x60, 0x83, 0xf0, - 0x51, 0x39, 0xe1, 0x91, 0x11, 0x1f, 0x5f, 0x13, 0x6f, 0x62, 0xc3, 0x08, - 0xfa, 0xf9, 0xd4, 0xf5, 0xe3, 0x46, 0xce, 0x7a, 0xa8, 0xe4, 0xd5, 0x0f, - 0x42, 0x8e, 0xa0, 0x34, 0x12, 0x44, 0xa4, 0xa9, 0xa3, 0xa0, 0x49, 0xb2, - 0xfa, 0xb6, 0xef, 0x45, 0x8e, 0xdf, 0xb9, 0x16, 0xc2, 0x13, 0x50, 0x15, - 0x94, 0x07, 0x8b, 0x2b, 0x08, 0x25, 0x52, 0x2a, 0x3d, 0xf6, 0xe6, 0xd5, - 0x3c, 0x3c, 0xed, 0xbb, 0x2f, 0x82, 0x35, 0xb1, 0x61, 0x99, 0xad, 0x71, - 0xdb, 0x8e, 0x8f, 0x63, 0x21, 0x22, 0xdd, 0xf1, 0xdf, 0x17, 0xc7, 0x97, - 0x17, 0x1c, 0xd3, 0x0a, 0x98, 0x95, 0xba, 0xa6, 0x4c, 0x67, 0x6a, 0xcb, - 0x99, 0xe5, 0xa5, 0x50, 0x47, 0xc0, 0x75, 0x3d, 0x25, 0x4b, 0x31, 0x62, - 0xdc, 0x33, 0x9c, 0x79, 0x5d, 0xa9, 0x4d, 0xec, 0xab, 0x04, 0xc9, 0x3d, - 0xe4, 0x23, 0x34, 0xf5, 0x64, 0xb8, 0xf5, 0xf7, 0x71, 0x3e, 0x40, 0x53, - 0x14, 0xb6, 0xa6, 0xa1, 0xf0, 0x03, 0x75, 0xbd, 0xbb, 0xa8, 0x14, 0x49, - 0x79, 0x8a, 0xcd, 0x43, 0xac, 0x01, 0xe5, 0x0d, 0x23, 0x91, 0xeb, 0x9c, - 0xae, 0x49, 0x49, 0x5c, 0xb5, 0xeb, 0xd0, 0x79, 0x03, 0xa5, 0x4b, 0xf9, - 0x14, 0x61, 0xea, 0x40, 0xdb, 0x8a, 0x9e, 0xee, 0xec, 0x34, 0x9b, 0x8b, - 0x47, 0xd9, 0x9d, 0xb9, 0x26, 0x35, 0xe9, 0x43, 0x4a, 0xfb, 0x60, 0xbf, - 0x70, 0x99, 0x42, 0xd7, 0xe8, 0x5f, 0x91, 0xcc, 0xcc, 0x0b, 0x66, 0x66, - 0x84, 0x60, 0xd9, 0xe4, 0x50, 0x7e, 0x87, 0x24, 0x14, 0x5d, 0xb2, 0xea, - 0x51, 0x94, 0xfc, 0x14, 0xc3, 0x12, 0x8c, 0xad, 0xa6, 0x21, 0x12, 0xd9, - 0x56, 0x34, 0xfb, 0x59, 0xcb, 0x3c, 0x15, 0x24, 0x27, 0xe8, 0xe6, 0x59, - 0x0b, 0x41, 0x44, 0xc3, 0xcb, 0xb3, 0x8b, 0x28, 0xa8, 0x48, 0x5c, 0xe5, - 0xba, 0x88, 0x67, 0xe0, 0x27, 0x9c, 0x77, 0xb6, 0xd7, 0xe2, 0x3a, 0x70, - 0x49, 0x92, 0x12, 0x74, 0xc4, 0xd9, 0xf6, 0xbe, 0xd7, 0xe7, 0xde, 0xd1, - 0xa5, 0x73, 0xfb, 0x96, 0x34, 0x00, 0xce, 0x1a, 0x34, 0xb8, 0x33, 0xba, - 0x1f, 0x49, 0xf0, 0x9e, 0x05, 0xf6, 0x97, 0x3d, 0x39, 0x67, 0x67, 0x4b, - 0xd0, 0xba, 0xe4, 0x3b, 0x32, 0x19, 0x69, 0xe6, 0x23, 0x9b, 0xad, 0xd4, - 0x30, 0xe5, 0x8c, 0x81, 0x75, 0x52, 0x94, 0x33, 0x74, 0xe6, 0x01, 0xed, - 0xc4, 0xf2, 0x3f, 0xa8, 0x79, 0xfd, 0xf0, 0x39, 0x32, 0xd9, 0xd4, 0x8d, - 0xa2, 0x24, 0xa4, 0xb5, 0x3b, 0xea, 0x9b, 0x3d, 0x26, 0x51, 0x60, 0xa2, - 0x35, 0x7c, 0x25, 0xdc, 0xca, 0xc9, 0x46, 0x5e, 0xac, 0xd8, 0xf1, 0xeb, - 0x7c, 0x7e, 0x76, 0x71, 0x69, 0x05, 0x6d, 0xf4, 0xde, 0xc4, 0x47, 0xb5, - 0x13, 0xc4, 0xce, 0x7a, 0x48, 0x80, 0x41, 0x6d, 0xf3, 0xf6, 0x5a, 0xf2, - 0x02, 0xae, 0x87, 0x56, 0xb5, 0x0d, 0x2e, 0x84, 0x91, 0xaf, 0xcc, 0xf3, - 0xe5, 0xca, 0xe5, 0x80, 0xe5, 0x68, 0x2a, 0x0f, 0xf3, 0xe7, 0x76, 0x3f, - 0xa6, 0x4f, 0x02, 0x7d, 0xb2, 0xdb, 0x42, 0x1d, 0x2c, 0x80, 0x5f, 0x1c, - 0x0f, 0x2f, 0x65, 0xd5, 0xf8, 0xb7, 0xc6, 0xc8, 0x25, 0x15, 0x52, 0x3f, - 0x6c, 0x75, 0x2c, 0x81, 0x3a, 0x38, 0x44, 0x66, 0xa6, 0x75, 0xe6, 0x9c, - 0x37, 0x28, 0x58, 0xb3, 0x27, 0x41, 0x48, 0x1f, 0x18, 0xa7, 0xd2, 0xca, - 0xa5, 0xd5, 0x1d, 0x8c, 0x3a, 0xda, 0x49, 0x87, 0xae, 0x5c, 0x39, 0x14, - 0x59, 0x7e, 0x1b, 0xb4, 0xf0, 0x34, 0x60, 0x16, 0xcc, 0xdc, 0xb5, 0x81, - 0x13, 0xb3, 0x8c, 0xf3, 0x87, 0xce, 0xf9, 0x7c, 0x9d, 0xcc, 0x8d, 0x30, - 0xe4, 0x39, 0xdf, 0xce, 0x33, 0x97, 0x17, 0x6d, 0xe2, 0x51, 0x30, 0x14, - 0xfe, 0xd8, 0xa2, 0xe1, 0xe1, 0x68, 0xac, 0x91, 0xdd, 0x93, 0xe7, 0x6e, - 0x15, 0x59, 0x74, 0x76, 0xae, 0x1d, 0x99, 0x7e, 0x70, 0x17, 0xb1, 0x6b, - 0x2c, 0x9d, 0x2f, 0x13, 0x2d, 0xda, 0x11, 0xe7, 0xd3, 0x14, 0xa1, 0xac, - 0xe2, 0x9b, 0x69, 0x18, 0xa2, 0x35, 0xc2, 0xd0, 0xf7, 0xa3, 0x17, 0x11, - 0xa9, 0xf1, 0x7e, 0xb7, 0x24, 0xd9, 0x10, 0x27, 0xd9, 0xcb, 0x78, 0x74, - 0x70, 0xe7, 0xee, 0xb6, 0x18, 0x44, 0xe7, 0x8c, 0xe5, 0x0a, 0x13, 0x7b, - 0xf1, 0x1f, 0xbe, 0x35, 0x39, 0x2c, 0x8c, 0x31, 0xce, 0xd7, 0x27, 0x84, - 0xd3, 0x94, 0x8b, 0x70, 0xe3, 0x13, 0xfe, 0x35, 0x40, 0x86, 0x6c, 0x4c, - 0xf9, 0x85, 0x7f, 0xb9, 0xa0, 0x89, 0x90, 0x6e, 0x52, 0x7f, 0xe4, 0xa9, - 0xd2, 0x16, 0x29, 0x2e, 0x68, 0x82, 0x3b, 0x00, 0x7b, 0xe6, 0x33, 0xcd, - 0x5b, 0x92, 0x72, 0x7c, 0x23, 0x5a, 0xb8, 0xb2, 0x67, 0x4c, 0x8c, 0x95, - 0xe7, 0x7c, 0x53, 0x72, 0x27, 0x1c, 0xc8, 0x3a, 0x01, 0xe8, 0x82, 0xce, - 0x0d, 0x97, 0x4b, 0xa2, 0xb6, 0xe6, 0xcc, 0x70, 0xa7, 0xe6, 0x3b, 0xf7, - 0xd9, 0x5e, 0xcc, 0x33, 0x47, 0x76, 0x78, 0xda, 0x0a, 0x8f, 0xd7, 0x80, - 0x69, 0x9f, 0x0a, 0x35, 0x3a, 0xd2, 0x71, 0xd7, 0x58, 0x65, 0x74, 0xdc, - 0xb1, 0xcb, 0x20, 0xc5, 0x76, 0xb3, 0x6a, 0x89, 0x52, 0x30, 0x41, 0x53, - 0xcf, 0x7c, 0x53, 0x57, 0x9c, 0xf9, 0xe7, 0xda, 0xf2, 0x3c, 0xc8, 0x43, - 0xb1, 0xa5, 0xee, 0x31, 0xd5, 0x13, 0xe4, 0x2a, 0x6b, 0x68, 0x0a, 0xd5, - 0xfb, 0xe3, 0xa9, 0x10, 0xc3, 0x65, 0x96, 0x49, 0x59, 0x4c, 0x17, 0xeb, - 0x37, 0x90, 0x28, 0xc2, 0xa6, 0xd9, 0xbd, 0xe8, 0xa9, 0x7a, 0xa5, 0x15, - 0xcb, 0xd8, 0x6b, 0xd0, 0xa8, 0xb5, 0xbb, 0x9c, 0x35, 0xca, 0xe5, 0x3c, - 0xfd, 0x4c, 0xd5, 0xb7, 0xdb, 0x39, 0x17, 0x8f, 0xbf, 0x3c, 0x3e, 0x7d, - 0x7b, 0x7c, 0xe9, 0x00, 0x3b, 0x6c, 0x42, 0xc1, 0xf3, 0x2f, 0xd4, 0xb0, - 0xa5, 0xda, 0x95, 0xe1, 0x12, 0xd7, 0xdd, 0xaf, 0xcf, 0x76, 0x9d, 0x6d, - 0x87, 0x23, 0xe7, 0xba, 0x85, 0x9c, 0xbf, 0x20, 0x7e, 0x0e, 0x65, 0x8a, - 0xbf, 0x8e, 0xde, 0x1c, 0x3d, 0xe3, 0x60, 0xfe, 0xeb, 0x24, 0x67, 0x64, - 0x74, 0xaf, 0xec, 0x64, 0x01, 0x27, 0x78, 0xb6, 0x17, 0xe0, 0x49, 0xc8, - 0x65, 0x96, 0xea, 0xf9, 0x60, 0x31, 0x96, 0x56, 0x88, 0xf3, 0x4f, 0x49, - 0x51, 0x15, 0x6b, 0x20, 0x34, 0x6b, 0xb1, 0x32, 0x2a, 0x76, 0x88, 0xc8, - 0x06, 0xf5, 0x7a, 0xc9, 0x55, 0x36, 0xf1, 0xec, 0x89, 0x67, 0x13, 0xf9, - 0x6a, 0xc1, 0xa8, 0x67, 0x52, 0x50, 0xb9, 0x85, 0x66, 0x9f, 0x09, 0x6b, - 0x3a, 0x94, 0x93, 0xc5, 0xf2, 0x62, 0xf3, 0x35, 0x0e, 0x49, 0x12, 0x73, - 0x5b, 0xf0, 0xde, 0xb3, 0x50, 0x5f, 0x2b, 0xb4, 0x92, 0x2a, 0xad, 0x1f, - 0x4a, 0x06, 0xa0, 0xfa, 0xb3, 0x7f, 0xf6, 0xb9, 0x7b, 0x96, 0xeb, 0x49, - 0xa6, 0x73, 0x05, 0xa3, 0x79, 0xe4, 0x0d, 0x95, 0x32, 0xe5, 0xf2, 0xf5, - 0x31, 0x32, 0x22, 0x5b, 0x04, 0x6b, 0x1f, 0xbc, 0xf2, 0xa2, 0xaa, 0x8e, - 0x02, 0xe7, 0xd4, 0xd7, 0xb8, 0xe0, 0x49, 0xa5, 0x8b, 0x9b, 0x90, 0xfc, - 0x9f, 0xcb, 0x5d, 0x78, 0xce, 0xe1, 0x90, 0x95, 0xfd, 0x34, 0x36, 0x53, - 0x41, 0x01, 0xb0, 0xd3, 0x24, 0xd4, 0x75, 0x78, 0x60, 0x6f, 0xd4, 0x49, - 0x93, 0x1f, 0x0d, 0x2e, 0x8f, 0xe7, 0xbb, 0x4a, 0x95, 0x34, 0xe5, 0xec, - 0x7a, 0x4e, 0x3a, 0xfe, 0xa4, 0x59, 0x16, 0x34, 0x78, 0x7c, 0x4f, 0x8f, - 0xa4, 0x54, 0xd4, 0x05, 0xdb, 0x61, 0xfc, 0x61, 0xff, 0xc0, 0x13, 0xa5, - 0x5a, 0x71, 0xa5, 0x49, 0xb1, 0x74, 0x06, 0x7e, 0x66, 0x1b, 0x62, 0x52, - 0x09, 0xad, 0x7f, 0xfe, 0x54, 0xa5, 0x1b, 0x93, 0x42, 0x99, 0xf3, 0xf3, - 0x42, 0x4c, 0x19, 0x6c, 0xa1, 0xc1, 0x08, 0x9f, 0xeb, 0xe5, 0xa2, 0x5b, - 0x59, 0x5a, 0xe9, 0x6e, 0xe5, 0x81, 0x05, 0xe2, 0x6a, 0xef, 0xd3, 0xb9, - 0xc6, 0x7f, 0x37, 0x5e, 0x7f, 0xbe, 0xc6, 0xaa, 0xa1, 0xbe, 0x88, 0x63, - 0xd0, 0x52, 0xf0, 0xfc, 0xa7, 0xee, 0x24, 0x38, 0x90, 0xae, 0x9e, 0x8b, - 0xf3, 0x82, 0x57, 0xdb, 0xa0, 0x14, 0xed, 0x20, 0x41, 0xaf, 0x5e, 0xf8, - 0xaa, 0x18, 0x6d, 0xae, 0x3c, 0xd7, 0x3d, 0xe9, 0xe4, 0x51, 0x1a, 0x1c, - 0xe3, 0xe7, 0x42, 0x52, 0xaf, 0xe1, 0x49, 0xb6, 0x73, 0xc0, 0xe1, 0xb8, - 0x21, 0xca, 0xb5, 0x7f, 0xfa, 0x85, 0xd2, 0x86, 0xdd, 0x48, 0x26, 0x08, - 0xae, 0x7d, 0xe3, 0xd3, 0x9d, 0x50, 0x2c, 0x9c, 0xb0, 0x2d, 0x4d, 0xd2, - 0xa9, 0xd7, 0xbe, 0x20, 0x94, 0x71, 0x42, 0x8c, 0xfa, 0x9a, 0x88, 0x1a, - 0xcf, 0x78, 0x18, 0x01, 0xff, 0xd8, 0x5e, 0x95, 0xad, 0x85, 0x42, 0x4a, - 0x74, 0x72, 0x14, 0x3c, 0xf8, 0xc4, 0x4f, 0x30, 0x9e, 0xf2, 0x7d, 0xbb, - 0x12, 0x4d, 0xbf, 0x50, 0xa0, 0xf1, 0xe0, 0xd1, 0xa7, 0x1a, 0x85, 0xc9, - 0xf1, 0xb7, 0x37, 0xb2, 0xfe, 0x8d, 0x67, 0x84, 0x1c, 0x0e, 0x5d, 0xe1, - 0x65, 0x09, 0xa7, 0x2c, 0xda, 0xae, 0xd9, 0x4f, 0x9f, 0x3f, 0xf2, 0xac, - 0x5e, 0x4b, 0x85, 0xbb, 0x4c, 0x83, 0xf7, 0x3e, 0x6d, 0x1e, 0x73, 0x13, - 0xbc, 0x2d, 0x5a, 0x59, 0x4f, 0x5a, 0xb4, 0xc9, 0xc1, 0xd7, 0xff, 0x61, - 0xa6, 0x95, 0x9c, 0xa3, 0x30, 0x8b, 0xff, 0x08, 0xc7, 0xfb, 0x59, 0x18, - 0xf2, 0x2c, 0x76, 0x15, 0x57, 0x93, 0x21, 0x84, 0xc6, 0xf5, 0xd5, 0x4d, - 0xb0, 0x3a, 0x41, 0x0b, 0xb2, 0xe7, 0x74, 0x53, 0x07, 0x75, 0xa2, 0x55, - 0xd3, 0xd2, 0x14, 0x75, 0x8b, 0x78, 0xd2, 0xd1, 0x7d, 0x4d, 0x9b, 0x0a, - 0xea, 0x08, 0xac, 0x53, 0x3b, 0xb5, 0x63, 0x50, 0xdc, 0x2c, 0x45, 0xb5, - 0x75, 0x33, 0xf2, 0xe5, 0xec, 0x83, 0xd7, 0xf6, 0x3c, 0xf7, 0xd2, 0x8b, - 0x55, 0xf2, 0x30, 0x0e, 0x19, 0xfe, 0x57, 0xf4, 0xdf, 0x08, 0xa4, 0xc8, - 0x57, 0x31, 0x0d, 0x08, 0xb5, 0x62, 0x0c, 0xf4, 0x60, 0x33, 0x6e, 0x4f, - 0xcc, 0xd2, 0x38, 0xea, 0xa0, 0x1b, 0x15, 0x1e, 0xd8, 0x81, 0x4b, 0xbb, - 0x74, 0x93, 0x8c, 0x6f, 0xed, 0xc8, 0xb8, 0x36, 0x9a, 0x6f, 0x7d, 0xff, - 0xbd, 0xf0, 0x1c, 0x07, 0xf9, 0xa2, 0xd6, 0x53, 0x07, 0x68, 0x4e, 0x67, - 0x54, 0x60, 0xc4, 0x79, 0xbb, 0x51, 0xcc, 0x3a, 0x4f, 0xa6, 0x09, 0x03, - 0x87, 0x89, 0x64, 0x8a, 0x85, 0x6e, 0x0b, 0x7e, 0xe4, 0x88, 0x10, 0x29, - 0xc5, 0x93, 0x28, 0xb8, 0xdc, 0x9c, 0xfd, 0xd7, 0x6a, 0xa0, 0xa0, 0x11, - 0x1c, 0xbc, 0xbb, 0xfc, 0xfa, 0xec, 0x62, 0x18, 0x6d, 0x73, 0x9e, 0xf4, - 0xe5, 0xc5, 0xc9, 0x97, 0xef, 0x48, 0xe1, 0x73, 0x96, 0xe7, 0xa3, 0x98, - 0x14, 0xc1, 0x29, 0x87, 0x6a, 0x24, 0xf3, 0x51, 0x92, 0x5f, 0x1b, 0xf0, - 0x38, 0x90, 0x4d, 0x98, 0x77, 0x67, 0xb9, 0xaf, 0xd2, 0x21, 0x85, 0xb0, - 0xcd, 0xb2, 0x8e, 0xf0, 0xaf, 0x94, 0xbe, 0xcb, 0xbc, 0x36, 0x93, 0x56, - 0x73, 0xdf, 0x7d, 0xf5, 0xf5, 0xcb, 0xaf, 0x0f, 0xde, 0x7e, 0x33, 0x34, - 0x74, 0xbb, 0xef, 0xbe, 0xfb, 0x2e, 0x74, 0xbc, 0xec, 0x6f, 0x6f, 0x03, - 0xcf, 0xec, 0x26, 0x7e, 0x78, 0x18, 0x14, 0xc9, 0xc6, 0x06, 0x9d, 0xa3, - 0x0d, 0x9f, 0x4b, 0xa0, 0x90, 0xc7, 0xc5, 0x92, 0x6e, 0x3a, 0xfa, 0x7a, - 0x7b, 0xb1, 0x1c, 0x31, 0xc4, 0xf2, 0xf6, 0xb2, 0xd4, 0x82, 0x12, 0x78, - 0x7b, 0x7b, 0x63, 0x63, 0x78, 0x7c, 0x1c, 0x1d, 0x9c, 0x0e, 0xcf, 0x82, - 0x77, 0x37, 0x77, 0xb7, 0x48, 0x12, 0xb8, 0x4e, 0x4a, 0xfa, 0x65, 0x63, - 0xe3, 0xf4, 0xe0, 0x92, 0x95, 0x9c, 0x6f, 0x8f, 0x2f, 0x86, 0x27, 0x67, - 0x6f, 0x79, 0x77, 0x18, 0x08, 0x22, 0x9e, 0xde, 0x33, 0xf6, 0xd6, 0x55, - 0x8a, 0x3c, 0xcd, 0x7b, 0x2b, 0xe5, 0xc0, 0xe0, 0x26, 0x24, 0xaa, 0x88, - 0xec, 0x26, 0x8e, 0x25, 0xab, 0xf3, 0x23, 0x31, 0x01, 0x25, 0xab, 0x1a, - 0xe6, 0x7d, 0xdc, 0x88, 0xbc, 0xa1, 0x43, 0xa0, 0xde, 0x93, 0x91, 0x84, - 0xcc, 0xf4, 0x04, 0x81, 0x00, 0xc1, 0xea, 0x01, 0x44, 0x42, 0xeb, 0xc4, - 0x87, 0x27, 0x6f, 0xce, 0x49, 0xe6, 0x7f, 0x37, 0x3c, 0xf8, 0xea, 0x98, - 0x1f, 0xfd, 0x2a, 0x29, 0xfd, 0x76, 0x48, 0xc9, 0x09, 0xee, 0xe4, 0x6d, - 0x52, 0x16, 0xe3, 0x78, 0xc1, 0x71, 0xe7, 0xd4, 0x4d, 0x5f, 0xf8, 0x62, - 0xd0, 0xb6, 0x48, 0x7f, 0x1e, 0x8c, 0x7a, 0xae, 0xcf, 0x03, 0x29, 0x3a, - 0x6c, 0xf7, 0xe2, 0xf8, 0xe0, 0xe8, 0xcd, 0xb1, 0x05, 0x54, 0xc9, 0x3d, - 0x42, 0x8d, 0xde, 0x64, 0x5c, 0xbd, 0xc6, 0x99, 0x3e, 0xf9, 0xae, 0xe2, - 0xc5, 0xa7, 0x6f, 0xb8, 0x24, 0x43, 0x7b, 0x77, 0x7e, 0xa3, 0xf0, 0xec, - 0xe0, 0x2a, 0xdd, 0x96, 0xd6, 0xad, 0xbf, 0xd8, 0x2d, 0x89, 0x45, 0x26, - 0xa9, 0xfc, 0x26, 0x6a, 0x2c, 0xd4, 0xdf, 0xcf, 0x76, 0x76, 0x76, 0x1e, - 0x99, 0x07, 0x0c, 0x8d, 0x7a, 0x0b, 0xd0, 0x54, 0xf6, 0xf9, 0xf1, 0x6d, - 0xdf, 0xbe, 0x51, 0x66, 0x68, 0xb6, 0xe5, 0x3f, 0xe7, 0xa2, 0x78, 0xa7, - 0x65, 0xd2, 0x3e, 0xe8, 0x71, 0x96, 0xb9, 0x3d, 0xa8, 0x2c, 0xcf, 0x84, - 0x71, 0x6e, 0xd2, 0x32, 0xc0, 0x49, 0xb3, 0xa1, 0x4f, 0x52, 0xb0, 0x9f, - 0x38, 0x5f, 0xd5, 0x9b, 0xe4, 0x6f, 0xa8, 0x4d, 0xfe, 0x31, 0xc8, 0xf2, - 0xeb, 0xed, 0xd9, 0x3e, 0x2e, 0x59, 0x7a, 0xe8, 0x75, 0x82, 0xba, 0x3f, - 0xf7, 0x99, 0x0b, 0x3d, 0x2a, 0x78, 0x69, 0x39, 0xca, 0xf1, 0x23, 0xc6, - 0xf5, 0x0b, 0xd6, 0x01, 0xdb, 0xc9, 0xf5, 0x65, 0x65, 0xe6, 0x16, 0x8e, - 0xd1, 0xd2, 0x49, 0xc1, 0x5b, 0xc6, 0x66, 0xa6, 0x01, 0xb1, 0x10, 0xea, - 0x85, 0x3e, 0x17, 0x22, 0xa1, 0x5f, 0x73, 0x22, 0x9a, 0x41, 0xf9, 0x50, - 0xf2, 0x5b, 0xec, 0xac, 0x55, 0x6b, 0x31, 0x60, 0xab, 0x88, 0x65, 0xe5, - 0x19, 0xc9, 0xe8, 0xb1, 0xa4, 0xdf, 0x0c, 0x11, 0xd6, 0x1e, 0x44, 0xa3, - 0x21, 0xd4, 0x9d, 0x1b, 0xae, 0xf7, 0xd9, 0xef, 0x83, 0x82, 0x0a, 0x47, - 0x2f, 0x1f, 0xd1, 0x79, 0x30, 0x29, 0x59, 0xfd, 0xb9, 0x5e, 0x1c, 0x01, - 0xf5, 0x0c, 0x69, 0x14, 0x8d, 0xbe, 0x00, 0xb2, 0x94, 0x23, 0xe8, 0xad, - 0x90, 0xee, 0x50, 0xb4, 0x66, 0x90, 0x48, 0xa1, 0x2a, 0xf4, 0x45, 0x7b, - 0xb2, 0x8d, 0x68, 0x9c, 0x8f, 0xee, 0xe9, 0xf0, 0xdc, 0xd5, 0xc0, 0xa1, - 0x15, 0xb8, 0xe3, 0x25, 0xb8, 0x4d, 0x30, 0xfb, 0x50, 0xd6, 0x7d, 0x64, - 0x30, 0xfb, 0xb4, 0x0a, 0xfc, 0xc6, 0x7f, 0x6f, 0x0f, 0x8a, 0xe2, 0x66, - 0x3b, 0x9d, 0xbc, 0x9f, 0x14, 0x31, 0x7d, 0x46, 0x7c, 0xad, 0xf1, 0xf1, - 0x80, 0x3e, 0x8c, 0xfe, 0x52, 0xe1, 0xfb, 0xc5, 0xb8, 0x7d, 0x26, 0xff, - 0xbd, 0xcd, 0xe0, 0x5f, 0x00, 0x28, 0x0e, 0x16, 0xae, 0x85, 0x7b, 0xd0, - 0xac, 0x04, 0x67, 0x8e, 0x8e, 0x63, 0x3b, 0x65, 0xf4, 0xaf, 0xa3, 0x8e, - 0x92, 0xdb, 0x8f, 0x7b, 0x3b, 0x3b, 0xbb, 0xfb, 0xbb, 0x9f, 0xbd, 0xd8, - 0xd9, 0xdf, 0xdd, 0xdd, 0xdd, 0xdb, 0xdf, 0xdd, 0xdf, 0xdf, 0xdb, 0xf9, - 0x69, 0xbb, 0xb3, 0xb1, 0x71, 0x74, 0xf6, 0xdd, 0xdb, 0xd3, 0xb3, 0x83, - 0xa3, 0xe8, 0xf2, 0x8c, 0xf4, 0x5d, 0xb6, 0x55, 0xb4, 0x9c, 0x74, 0xa0, - 0x3e, 0x95, 0x99, 0xdc, 0x6c, 0x71, 0x50, 0xa2, 0xa3, 0xd1, 0x65, 0x06, - 0xa1, 0x98, 0x5f, 0x1a, 0xdc, 0x94, 0xb3, 0x0f, 0xb3, 0xaf, 0x8f, 0xe9, - 0xa4, 0x27, 0x51, 0x61, 0x5e, 0xef, 0xc1, 0xd6, 0x1a, 0x91, 0x2a, 0x94, - 0xa9, 0x2b, 0x3a, 0x0e, 0x27, 0x9b, 0x8b, 0x0a, 0xdc, 0x14, 0xd7, 0xb4, - 0x8f, 0x9b, 0x94, 0xe2, 0x24, 0x45, 0x35, 0xa0, 0xc1, 0x15, 0x0b, 0x50, - 0xbf, 0xa5, 0x14, 0x66, 0x27, 0x79, 0x60, 0xab, 0x31, 0xc1, 0xb3, 0xb5, - 0x53, 0xa2, 0x8b, 0x27, 0x79, 0xc0, 0xac, 0xab, 0x6c, 0x42, 0x90, 0xcc, - 0xfc, 0xec, 0x80, 0x60, 0x64, 0x9a, 0x5c, 0x9a, 0xdb, 0x90, 0xe1, 0xbe, - 0x6e, 0xe9, 0x8e, 0xfb, 0x31, 0xee, 0xe1, 0xbb, 0xe0, 0x6f, 0xc2, 0x4b, - 0x67, 0xdb, 0x99, 0x9f, 0x64, 0x00, 0xef, 0x86, 0x27, 0x6f, 0xbf, 0x82, - 0x7f, 0xe9, 0xbb, 0xb3, 0x8b, 0xa3, 0x21, 0x35, 0xcb, 0xb7, 0xf1, 0x06, - 0x2c, 0x10, 0x7c, 0x68, 0x75, 0x54, 0x72, 0x04, 0xb8, 0xeb, 0x3f, 0x41, - 0xe3, 0x98, 0xf4, 0x5c, 0xea, 0x01, 0x86, 0x19, 0x48, 0x8b, 0x9c, 0x52, - 0xd0, 0xce, 0xe0, 0x70, 0x1a, 0xe4, 0xf5, 0x2f, 0x66, 0x31, 0x83, 0xc1, - 0x26, 0x03, 0x41, 0x55, 0x43, 0x24, 0xc1, 0x36, 0xc3, 0xaa, 0x6c, 0xb3, - 0xd4, 0xba, 0x5d, 0x66, 0x60, 0x15, 0x68, 0x25, 0xcb, 0x1d, 0x80, 0x6e, - 0x65, 0x45, 0xf8, 0x8c, 0x5d, 0x4d, 0xe3, 0x6b, 0x74, 0xd8, 0x3c, 0x7e, - 0x41, 0x67, 0xda, 0xfd, 0xc7, 0x76, 0x89, 0x9a, 0x7d, 0xdc, 0xde, 0x09, - 0x08, 0x00, 0xd9, 0xee, 0xc8, 0x93, 0x50, 0xc3, 0xb8, 0x48, 0x48, 0xa8, - 0x31, 0xc3, 0x2e, 0x76, 0x2e, 0x84, 0x51, 0x47, 0xfa, 0xd5, 0x02, 0x95, - 0x1b, 0x62, 0x54, 0xe8, 0x07, 0x69, 0x51, 0x22, 0xd9, 0xa3, 0x92, 0x9c, - 0x57, 0xa0, 0x0b, 0xc4, 0xc3, 0xa3, 0x4f, 0x24, 0x7a, 0x41, 0x5f, 0x94, - 0x25, 0xe7, 0xc1, 0xd0, 0xd8, 0x23, 0x89, 0x88, 0xe1, 0xdc, 0x1f, 0x15, - 0xd9, 0x3a, 0x0c, 0xb3, 0x9c, 0x8e, 0xd3, 0xb2, 0x63, 0x49, 0x46, 0x1e, - 0x78, 0xcb, 0x3b, 0xc0, 0x8a, 0x92, 0x86, 0x12, 0xd3, 0xed, 0xa1, 0x55, - 0x47, 0x34, 0xe9, 0x36, 0x9b, 0xcd, 0x24, 0x1b, 0xb3, 0xc3, 0x09, 0x28, - 0xbe, 0x95, 0x54, 0x73, 0xa9, 0x5c, 0x5d, 0x0d, 0xe6, 0xb3, 0xdc, 0xbb, - 0xa4, 0x7f, 0x48, 0x34, 0xbe, 0xb1, 0x74, 0x6f, 0xf7, 0x61, 0x76, 0x4c, - 0x12, 0x27, 0xf1, 0x4a, 0xa1, 0x1c, 0x8d, 0xe9, 0x0f, 0x90, 0xfd, 0x2b, - 0xcb, 0x16, 0x56, 0x2f, 0x69, 0x70, 0xd5, 0x6a, 0x6a, 0xc8, 0x06, 0x02, - 0x81, 0x5d, 0x32, 0x53, 0xb0, 0x3c, 0x5a, 0x50, 0xcf, 0xbd, 0xca, 0x7b, - 0x91, 0x96, 0x45, 0x32, 0xbd, 0xd2, 0x22, 0x74, 0x5a, 0xf7, 0x6d, 0xb4, - 0x0a, 0x1a, 0x90, 0x49, 0x48, 0xfc, 0xef, 0x72, 0xee, 0x32, 0x62, 0x32, - 0xe5, 0x19, 0xd7, 0x60, 0x9c, 0x8a, 0xe0, 0x5d, 0x65, 0x14, 0xe2, 0x99, - 0x19, 0x18, 0xc4, 0xed, 0x46, 0xe4, 0x00, 0x7a, 0x6b, 0x53, 0x70, 0x68, - 0x70, 0x80, 0xe4, 0x02, 0x75, 0x04, 0x0f, 0x2e, 0x47, 0xb4, 0xda, 0xee, - 0x39, 0x5e, 0x3b, 0xb6, 0x71, 0x63, 0xd5, 0x0e, 0xc3, 0xb2, 0x2a, 0x02, - 0x43, 0x68, 0x70, 0x7e, 0x7e, 0x50, 0x34, 0x40, 0x18, 0xc5, 0xe9, 0xa0, - 0x21, 0x58, 0x75, 0x59, 0xb8, 0x15, 0x05, 0x8a, 0x77, 0xec, 0x8a, 0x07, - 0xb5, 0x1d, 0x43, 0xe5, 0x48, 0xeb, 0xcf, 0xe1, 0x87, 0x8f, 0x60, 0x73, - 0x48, 0x26, 0xf4, 0x4f, 0x57, 0x72, 0x4a, 0xd2, 0xf9, 0xe3, 0x87, 0x51, - 0x07, 0xf1, 0x51, 0x1d, 0x63, 0xae, 0x9a, 0x97, 0x04, 0x6b, 0xa8, 0x8f, - 0x92, 0x11, 0x07, 0x2c, 0x22, 0xed, 0x5b, 0xd0, 0x3e, 0x2b, 0x70, 0x8e, - 0x38, 0x08, 0x12, 0xe6, 0xbb, 0x1f, 0x7d, 0x19, 0x17, 0xe9, 0xb8, 0x17, - 0x1d, 0xa5, 0x24, 0xab, 0x97, 0x3d, 0x8f, 0xc9, 0xe8, 0x90, 0x2c, 0x07, - 0xd1, 0x77, 0x56, 0x1d, 0x94, 0xee, 0x5c, 0xc4, 0x9e, 0xc2, 0xb4, 0xe8, - 0x12, 0xd5, 0x36, 0xc4, 0x66, 0xab, 0x56, 0xd7, 0x30, 0x29, 0x0c, 0x6d, - 0x7b, 0xb8, 0x39, 0x6c, 0x66, 0x5c, 0xdc, 0x56, 0x81, 0xd6, 0x45, 0xaa, - 0x2a, 0xd8, 0x76, 0xc8, 0x22, 0x10, 0xd6, 0x77, 0xae, 0x85, 0x2e, 0x94, - 0xe6, 0xb2, 0xb9, 0x05, 0x28, 0x79, 0x47, 0xaa, 0xda, 0x72, 0x0a, 0x0d, - 0x9b, 0x31, 0x4f, 0x2f, 0x6e, 0x23, 0x3b, 0xae, 0x1b, 0x08, 0x2d, 0xa7, - 0x75, 0xe2, 0x15, 0x51, 0x7e, 0x72, 0x76, 0x79, 0xfc, 0xbb, 0x68, 0x98, - 0x72, 0x9d, 0x45, 0x47, 0x39, 0x7c, 0xc8, 0xd9, 0xd9, 0xad, 0x5e, 0xa8, - 0xc6, 0x9e, 0xba, 0x34, 0x55, 0x35, 0x0b, 0x5a, 0x2e, 0x84, 0x94, 0xcf, - 0xb9, 0x97, 0xf2, 0xe5, 0xbc, 0x32, 0xa0, 0xd9, 0xbb, 0x34, 0x8e, 0x5c, - 0x01, 0x6b, 0x9e, 0xfb, 0x7b, 0x26, 0xfd, 0xf7, 0x1e, 0x62, 0x7c, 0xa9, - 0x2f, 0x02, 0x00, 0x8e, 0xdb, 0x51, 0x9b, 0x00, 0x6c, 0x29, 0xe3, 0x34, - 0xa7, 0x2b, 0x98, 0xf9, 0xd4, 0x58, 0xcc, 0x80, 0x88, 0x71, 0xc3, 0xd8, - 0xd9, 0xcc, 0x11, 0x8f, 0x88, 0xae, 0xb0, 0x5c, 0x63, 0xa4, 0xc3, 0x09, - 0x3c, 0xb8, 0x9a, 0x16, 0xed, 0xdc, 0x85, 0xac, 0x14, 0x09, 0xa1, 0x48, - 0xab, 0x43, 0x85, 0x0e, 0x85, 0x20, 0xdc, 0x40, 0xdc, 0x18, 0xb5, 0x0a, - 0x59, 0x62, 0xee, 0x6e, 0xb6, 0x40, 0xb6, 0xe3, 0xb0, 0x1e, 0xa6, 0xd3, - 0x49, 0x34, 0x5b, 0x69, 0xca, 0xb3, 0xf2, 0x61, 0xce, 0xd1, 0x81, 0xba, - 0xf2, 0xd9, 0x67, 0x8d, 0x7b, 0xf7, 0xc1, 0x3d, 0xbd, 0x4f, 0x5f, 0x07, - 0x6a, 0xd1, 0x94, 0x7d, 0x8e, 0x56, 0x0a, 0xc8, 0xeb, 0x46, 0x0d, 0x99, - 0x33, 0x4c, 0x63, 0x94, 0x0e, 0x9d, 0xfd, 0xb0, 0x65, 0x5f, 0x5c, 0xb5, - 0xa3, 0x0d, 0x11, 0xba, 0x65, 0x9c, 0x71, 0x21, 0x9e, 0xeb, 0x35, 0x52, - 0xa8, 0x9d, 0xbc, 0xfa, 0x60, 0x03, 0x01, 0x85, 0x84, 0xa4, 0x01, 0xcb, - 0x34, 0x2c, 0x6f, 0x0d, 0x33, 0x6d, 0x98, 0x73, 0x4e, 0x74, 0x30, 0x0e, - 0xb3, 0xb0, 0x7a, 0xd6, 0x06, 0x0e, 0x32, 0xdf, 0xdd, 0x18, 0xfd, 0x77, - 0xeb, 0x87, 0xf3, 0xee, 0x9f, 0x19, 0xce, 0x41, 0xf4, 0x68, 0xb0, 0x9f, - 0xd6, 0x3f, 0x60, 0x26, 0x52, 0xe8, 0x49, 0x9d, 0x64, 0x30, 0x08, 0x19, - 0xfd, 0xc9, 0x1a, 0x8d, 0xd9, 0x09, 0x30, 0xaa, 0x62, 0x4d, 0x36, 0xd5, - 0x95, 0x79, 0x26, 0x4f, 0x43, 0x7e, 0xe4, 0xf6, 0x7b, 0x36, 0x94, 0x8f, - 0x1d, 0xae, 0xe5, 0xb9, 0x5b, 0xb4, 0xaa, 0xef, 0x4f, 0x32, 0xb0, 0xa4, - 0x85, 0x20, 0xe6, 0x5f, 0x10, 0xc8, 0xe5, 0x79, 0xc6, 0x1e, 0x7f, 0x40, - 0xe0, 0x06, 0x0d, 0xd6, 0x97, 0x90, 0xe3, 0x99, 0x20, 0x33, 0xaa, 0xf6, - 0x9a, 0x7e, 0xb6, 0x2b, 0x70, 0x4d, 0xc4, 0x1e, 0x15, 0x1b, 0x8f, 0xf4, - 0x4c, 0xba, 0xac, 0x16, 0x08, 0x3f, 0xac, 0x96, 0xeb, 0x92, 0x7b, 0x45, - 0x8a, 0xce, 0x63, 0xe5, 0x82, 0x5a, 0xd6, 0x28, 0xfc, 0x25, 0x63, 0x94, - 0xba, 0xc6, 0x5a, 0x0e, 0x45, 0x8a, 0xac, 0xe2, 0x9e, 0x4f, 0x12, 0x69, - 0xa9, 0x5c, 0x1b, 0x06, 0x7c, 0x18, 0x30, 0x5e, 0x21, 0x67, 0xb0, 0xef, - 0xe8, 0x6a, 0x99, 0x23, 0x3c, 0x43, 0xb3, 0xd1, 0x35, 0x99, 0x90, 0x1a, - 0xbd, 0x38, 0x78, 0xfb, 0xd5, 0x31, 0xce, 0x3b, 0xb3, 0x5d, 0x9f, 0x3a, - 0xcb, 0xb9, 0x71, 0x7d, 0x38, 0x8b, 0x0b, 0x01, 0xeb, 0x48, 0xf9, 0x8d, - 0xc9, 0x72, 0xcc, 0x7e, 0xea, 0x77, 0x7a, 0x0c, 0xd2, 0x02, 0x38, 0x9d, - 0xd3, 0x94, 0x07, 0xc1, 0x2c, 0x57, 0x5d, 0xc2, 0x1b, 0x91, 0xa9, 0xa7, - 0xe0, 0x18, 0x2c, 0xd2, 0xd0, 0x0a, 0x41, 0x97, 0x2d, 0x96, 0xa3, 0x45, - 0xac, 0x29, 0x5a, 0x71, 0x98, 0xf5, 0xa3, 0x9a, 0xc0, 0xa0, 0x32, 0x05, - 0xbe, 0x3b, 0x24, 0x20, 0xd2, 0x49, 0x9d, 0x39, 0xa4, 0xce, 0x41, 0xa8, - 0x71, 0x09, 0x3e, 0xd2, 0xee, 0xce, 0x8e, 0xc7, 0xdc, 0xf1, 0xd9, 0x4b, - 0x0d, 0x22, 0xcb, 0xa3, 0x9d, 0xfe, 0x8b, 0x17, 0xeb, 0xe8, 0xc7, 0x35, - 0x8a, 0x2c, 0x94, 0x67, 0x1f, 0xdd, 0x66, 0x9f, 0x1f, 0x5d, 0xd7, 0x66, - 0x8b, 0x6c, 0x81, 0x32, 0x1d, 0xea, 0x8e, 0x2f, 0x5c, 0xcc, 0x87, 0xea, - 0x20, 0x62, 0xfb, 0x82, 0x2d, 0x72, 0xee, 0x04, 0x0c, 0x5e, 0xca, 0x8d, - 0xc8, 0x49, 0x02, 0x80, 0x90, 0x32, 0x75, 0x65, 0xc1, 0x1e, 0xf9, 0xd4, - 0x99, 0x68, 0x3f, 0x6a, 0x61, 0x02, 0x11, 0x73, 0xcd, 0x12, 0x5d, 0x35, - 0x67, 0x63, 0x8c, 0xf4, 0xdd, 0x39, 0x2b, 0xa3, 0xa4, 0xbb, 0x88, 0xc0, - 0x4e, 0xd2, 0x27, 0x0c, 0x13, 0xdb, 0x35, 0x59, 0xf4, 0x9d, 0x16, 0xb0, - 0xe3, 0xe2, 0x03, 0xec, 0x9b, 0x11, 0xc8, 0xe2, 0x74, 0xae, 0x95, 0xe4, - 0xdc, 0xee, 0xaf, 0x51, 0x8c, 0x2f, 0xa3, 0x7e, 0xc0, 0xd2, 0x15, 0x85, - 0x87, 0xf9, 0xf9, 0x6c, 0x65, 0x32, 0x8a, 0xf6, 0x80, 0xd6, 0xcd, 0xd0, - 0x55, 0xa9, 0xe8, 0xdb, 0x53, 0xc1, 0x12, 0x14, 0xd4, 0x60, 0xe9, 0x2d, - 0x5d, 0x4a, 0x37, 0xb8, 0x22, 0x6a, 0x0c, 0xfc, 0xe3, 0x86, 0x12, 0xb7, - 0xd4, 0xe6, 0x34, 0x29, 0x36, 0xe5, 0xfc, 0x47, 0xd5, 0x4e, 0xea, 0x8a, - 0xb2, 0x42, 0x36, 0xf2, 0x83, 0x38, 0x3f, 0xd9, 0xbf, 0x3e, 0xb6, 0x47, - 0x46, 0xc5, 0x87, 0xd3, 0x6a, 0xae, 0xd7, 0x46, 0xd9, 0x6a, 0x30, 0xb8, - 0x94, 0xf7, 0xa5, 0xeb, 0xb8, 0xbd, 0x3b, 0x79, 0xdf, 0x96, 0xa3, 0x85, - 0xe8, 0xf9, 0xda, 0x57, 0x64, 0x26, 0x17, 0xed, 0x6d, 0x38, 0x12, 0xac, - 0x9d, 0x80, 0x5b, 0xa4, 0x55, 0x0e, 0xbe, 0x11, 0x69, 0xce, 0x04, 0x70, - 0x9b, 0x98, 0x6e, 0x00, 0x34, 0x0b, 0xde, 0x76, 0x8b, 0x68, 0x8a, 0x2b, - 0x45, 0xa7, 0x40, 0x61, 0x92, 0x13, 0x64, 0xa2, 0xb0, 0xcb, 0xc4, 0x83, - 0x7d, 0xe4, 0xcb, 0xb9, 0xcc, 0x02, 0x0e, 0x07, 0x1a, 0x7c, 0x5c, 0xdc, - 0xc0, 0xc9, 0xee, 0x14, 0xa4, 0xe6, 0x4d, 0x14, 0x02, 0x56, 0xd0, 0xd5, - 0x23, 0xf7, 0x0e, 0xb8, 0x6a, 0x65, 0x29, 0xaa, 0x2b, 0x10, 0xe8, 0x13, - 0x1f, 0x4b, 0xf9, 0xcc, 0x32, 0x5a, 0x8d, 0xa5, 0x20, 0xfe, 0x46, 0x89, - 0xc3, 0x1a, 0xc9, 0x55, 0xf5, 0x31, 0x69, 0x4b, 0x44, 0x19, 0xa8, 0x3f, - 0xa8, 0x0b, 0x87, 0xf4, 0xda, 0xda, 0x12, 0x42, 0x96, 0x05, 0x68, 0x81, - 0xa4, 0xdb, 0x1a, 0x9b, 0xd5, 0x2c, 0x12, 0x28, 0xa1, 0x1e, 0xea, 0x46, - 0xf3, 0x6e, 0x18, 0x13, 0x5f, 0x82, 0xfc, 0x60, 0xc1, 0x67, 0x24, 0xf2, - 0x4c, 0xfa, 0xc4, 0x0c, 0x65, 0x80, 0x92, 0xd4, 0x22, 0x81, 0x55, 0xc3, - 0x4b, 0x57, 0xaa, 0xdc, 0xe4, 0xc0, 0x6f, 0x8f, 0x2f, 0xbe, 0x3c, 0x1b, - 0x1e, 0x13, 0x87, 0x38, 0x3a, 0xfe, 0xf2, 0x1d, 0x73, 0x0f, 0xde, 0x31, - 0x31, 0x52, 0x00, 0x97, 0x41, 0x50, 0x96, 0x91, 0x4c, 0xe4, 0x64, 0x64, - 0xc9, 0x89, 0xec, 0x19, 0x65, 0x68, 0x4c, 0x97, 0x4a, 0xd1, 0xd3, 0x44, - 0xb4, 0xda, 0x14, 0xd1, 0x74, 0x1e, 0xb2, 0x84, 0x65, 0xe7, 0x39, 0x63, - 0x0c, 0x97, 0x86, 0xd1, 0x61, 0x18, 0xb7, 0xc5, 0xbe, 0x97, 0x8d, 0xef, - 0xc4, 0x86, 0xa1, 0x07, 0xc2, 0x57, 0xd1, 0xb1, 0x6a, 0x39, 0x83, 0xa0, - 0x14, 0xae, 0xc2, 0x57, 0x4f, 0x33, 0xb9, 0xbd, 0x38, 0x8d, 0x08, 0x67, - 0x19, 0xb8, 0xec, 0x29, 0xaa, 0xee, 0x29, 0xfe, 0xa4, 0xd6, 0xae, 0x29, - 0x84, 0xe0, 0x88, 0xcd, 0x48, 0x0a, 0xc6, 0x54, 0xd9, 0x32, 0xb8, 0x50, - 0x91, 0x48, 0xc2, 0xb2, 0xdc, 0x9e, 0x6a, 0xe6, 0x97, 0xa0, 0x15, 0x85, - 0x55, 0xdc, 0xe4, 0x23, 0xc1, 0x90, 0x01, 0xa2, 0x2d, 0x08, 0x7e, 0xb0, - 0xd4, 0x77, 0x71, 0xe0, 0x52, 0xbc, 0xf2, 0x81, 0xe7, 0x4b, 0x49, 0xe7, - 0x6e, 0x3d, 0x3b, 0xb8, 0x94, 0x99, 0x72, 0x72, 0xa9, 0x5c, 0xc8, 0xae, - 0xa2, 0x36, 0xfc, 0x48, 0x3e, 0x33, 0x8a, 0x03, 0x73, 0x1c, 0x6e, 0x9a, - 0x9c, 0x27, 0x0e, 0x8d, 0x0b, 0x24, 0xe0, 0xf5, 0x05, 0x61, 0xcc, 0xce, - 0xa2, 0xe1, 0x3c, 0xf5, 0x9c, 0x68, 0xf5, 0x76, 0xf3, 0x96, 0xc2, 0x78, - 0x14, 0xd5, 0xeb, 0x7e, 0xea, 0x19, 0x94, 0xd6, 0xa5, 0x16, 0x4c, 0xf9, - 0x50, 0x86, 0x26, 0xb6, 0x8d, 0x8d, 0x8d, 0xa3, 0xe3, 0xcb, 0x83, 0x93, - 0xd3, 0xe3, 0xa3, 0xe8, 0xe4, 0xed, 0xeb, 0xb3, 0x8b, 0x37, 0x07, 0x97, - 0xea, 0x64, 0x3a, 0x72, 0x3a, 0xaa, 0x2b, 0x67, 0xe2, 0x4c, 0x00, 0x5e, - 0x7f, 0x05, 0x09, 0xd3, 0x2e, 0x5e, 0x2b, 0x60, 0x90, 0x2c, 0x43, 0x52, - 0x59, 0x83, 0x8d, 0x48, 0x9d, 0x53, 0xbe, 0x40, 0x09, 0xdf, 0xcf, 0xdb, - 0xce, 0xa1, 0x30, 0xb0, 0xe5, 0x34, 0x0d, 0x13, 0xd8, 0x5f, 0x8f, 0x36, - 0xe5, 0x8a, 0x71, 0xc9, 0xdd, 0x04, 0xdc, 0x7a, 0x64, 0xc1, 0x80, 0x26, - 0xfb, 0x27, 0x9c, 0xdb, 0x0a, 0xf1, 0x52, 0xab, 0x9a, 0x9f, 0x94, 0xae, - 0x98, 0x1f, 0x93, 0x0b, 0xb7, 0x13, 0x64, 0x57, 0x11, 0x05, 0xa2, 0x6a, - 0x70, 0xd0, 0xa6, 0x4b, 0x54, 0xb2, 0x0a, 0x24, 0xe2, 0xd2, 0xc4, 0x27, - 0xe1, 0xfe, 0x72, 0x26, 0xd7, 0x06, 0x7b, 0x6d, 0x4b, 0xad, 0x8d, 0xf1, - 0x50, 0x26, 0xf3, 0x82, 0xeb, 0x40, 0xd9, 0x59, 0xe7, 0x57, 0x3c, 0x13, - 0x35, 0x3b, 0xae, 0x82, 0x1e, 0x86, 0x4d, 0x6d, 0x3a, 0x27, 0x04, 0x49, - 0x2e, 0xfd, 0x13, 0x45, 0x31, 0xe3, 0xb5, 0xe0, 0x9a, 0xbf, 0xfc, 0x73, - 0xee, 0xd3, 0xfa, 0x35, 0x4a, 0xc3, 0x2b, 0x2c, 0x41, 0xdd, 0x23, 0x3d, - 0x6d, 0xfe, 0xdc, 0x16, 0x46, 0x69, 0x47, 0xf4, 0x10, 0x17, 0x91, 0xec, - 0x6b, 0xf7, 0x1a, 0x26, 0x05, 0x5d, 0xd8, 0xb6, 0x50, 0x84, 0x27, 0x08, - 0x01, 0xa3, 0x4c, 0x80, 0x4a, 0xb0, 0x06, 0x32, 0x0f, 0xd0, 0x77, 0x69, - 0x46, 0x63, 0x16, 0xf1, 0xbd, 0x9d, 0xd7, 0x15, 0x69, 0x6a, 0x54, 0xc3, - 0x76, 0x05, 0xc2, 0x86, 0xee, 0x59, 0xac, 0x64, 0xf0, 0x42, 0xec, 0xfd, - 0xae, 0x58, 0xff, 0x4d, 0xc3, 0x36, 0x67, 0x92, 0xd5, 0x06, 0xd5, 0x73, - 0xd0, 0x34, 0x53, 0x57, 0x26, 0x15, 0xbe, 0x58, 0xf5, 0x54, 0x86, 0x9c, - 0xde, 0xba, 0xc6, 0xe8, 0x27, 0x6d, 0x23, 0x50, 0x2e, 0x8e, 0xf2, 0x9e, - 0x5a, 0xcc, 0x2b, 0x86, 0xc7, 0x8e, 0xd1, 0x1a, 0x36, 0x14, 0x90, 0x41, - 0x39, 0x25, 0x4c, 0xa7, 0x61, 0x1e, 0xee, 0x98, 0xeb, 0x4b, 0x71, 0x8d, - 0x4e, 0xad, 0x27, 0x17, 0xc4, 0x92, 0x8b, 0x47, 0x5d, 0x91, 0x47, 0xc1, - 0xf4, 0xe6, 0x1b, 0x86, 0x94, 0x68, 0x2f, 0x59, 0x9c, 0x00, 0xb8, 0xbf, - 0xe4, 0x63, 0x83, 0xc9, 0xb3, 0x3b, 0x33, 0x89, 0x0b, 0xd8, 0x18, 0x11, - 0x52, 0x2a, 0x77, 0x06, 0x48, 0x00, 0x73, 0x75, 0x66, 0x4b, 0x5c, 0x3e, - 0xbe, 0xac, 0x70, 0x5f, 0x60, 0x2b, 0x62, 0xce, 0x2a, 0xb3, 0x43, 0x21, - 0xc1, 0x6d, 0xae, 0x15, 0xab, 0x3b, 0x4f, 0xcd, 0x20, 0x42, 0x49, 0x43, - 0x36, 0xce, 0xb3, 0x42, 0xce, 0x1b, 0x24, 0xed, 0x8e, 0xaf, 0xfe, 0xd0, - 0x59, 0xdc, 0x50, 0x1f, 0x9d, 0xe8, 0x9a, 0x75, 0x95, 0x51, 0x16, 0xc6, - 0xbb, 0xe9, 0xb6, 0x4c, 0xe4, 0xf1, 0x57, 0x17, 0xf1, 0x55, 0x9c, 0x4c, - 0x7f, 0xbf, 0xb7, 0x33, 0x8c, 0xaf, 0x97, 0xd3, 0xf8, 0x0f, 0x78, 0xf1, - 0xd5, 0x93, 0x27, 0x7b, 0x3b, 0x9f, 0x7e, 0xb6, 0xd3, 0xa9, 0xb9, 0x8a, - 0x02, 0x3f, 0x33, 0xdc, 0x86, 0x28, 0xd7, 0xcc, 0x7c, 0x17, 0xfd, 0x0c, - 0xc6, 0xd7, 0x29, 0x77, 0xf3, 0x35, 0x0b, 0x2f, 0xba, 0x06, 0x31, 0x02, - 0x22, 0x84, 0x4d, 0x6a, 0x5d, 0x28, 0xba, 0x71, 0x89, 0xae, 0x3f, 0xd9, - 0xdd, 0x17, 0x56, 0x76, 0x0d, 0xbb, 0x54, 0x2c, 0x14, 0x1b, 0xbd, 0x4c, - 0xe7, 0x74, 0x03, 0x7d, 0x1e, 0x95, 0xf1, 0xb5, 0xa3, 0x55, 0xb4, 0xe0, - 0x2a, 0x39, 0x9b, 0x25, 0xfc, 0x2a, 0x45, 0x4d, 0xe1, 0x41, 0xb4, 0x79, - 0x29, 0x90, 0x69, 0x10, 0x7c, 0x16, 0x49, 0x3e, 0x95, 0x6c, 0xd7, 0x78, - 0x66, 0x21, 0x97, 0xfc, 0x3e, 0x3b, 0xe3, 0x07, 0x8b, 0xa9, 0xab, 0x5b, - 0x0d, 0x0d, 0x2c, 0xf5, 0x04, 0x37, 0x5d, 0x14, 0xbe, 0x4e, 0x92, 0x5c, - 0x37, 0x21, 0x18, 0x1b, 0x2d, 0x16, 0xaa, 0x40, 0x74, 0x30, 0xab, 0x9e, - 0x2b, 0xb8, 0xd2, 0x9f, 0xd8, 0x4c, 0x07, 0xf8, 0x1d, 0xd5, 0xe8, 0xb4, - 0xa8, 0x6e, 0x67, 0x21, 0xf9, 0x41, 0xae, 0xc8, 0x87, 0xa6, 0x13, 0x57, - 0xe6, 0x15, 0x97, 0x7e, 0x63, 0x5e, 0x9a, 0x92, 0xbb, 0xfb, 0xf9, 0x2b, - 0x10, 0xc4, 0xee, 0xe7, 0x7f, 0x70, 0x9f, 0xed, 0xe9, 0x67, 0x7b, 0x9f, - 0xff, 0x61, 0x30, 0xc0, 0xf8, 0x98, 0x42, 0xba, 0xf6, 0x75, 0x57, 0x93, - 0x0e, 0x63, 0x3d, 0xc2, 0xf2, 0x97, 0x43, 0xde, 0x91, 0xbd, 0xee, 0x58, - 0xcf, 0xe1, 0x2a, 0xf7, 0xd4, 0xf6, 0xee, 0xf8, 0x56, 0x6a, 0x80, 0xc5, - 0x40, 0xf5, 0x2c, 0xda, 0x16, 0xdd, 0x99, 0x08, 0xd1, 0x4e, 0xe1, 0x20, - 0x4b, 0xe2, 0xe8, 0x8f, 0x4c, 0xa9, 0x7f, 0xdc, 0x88, 0xd4, 0x44, 0xce, - 0xdb, 0x81, 0xb2, 0x84, 0x91, 0x91, 0xad, 0xd4, 0x96, 0x17, 0xc8, 0x37, - 0x6e, 0x99, 0xa3, 0x2c, 0xf9, 0x0e, 0x0c, 0x0a, 0x5d, 0xfc, 0x49, 0x61, - 0x7f, 0x64, 0xc3, 0x99, 0x9f, 0x21, 0x9f, 0x41, 0xb2, 0x82, 0x48, 0xc2, - 0x28, 0x99, 0x37, 0xe0, 0xc9, 0xdf, 0x7f, 0xff, 0xbd, 0x8a, 0x53, 0xf4, - 0x8b, 0x8e, 0xfb, 0x86, 0x38, 0xd1, 0x84, 0x98, 0xdb, 0x0c, 0xe5, 0x14, - 0xb4, 0x32, 0x89, 0x5e, 0xf8, 0x57, 0x3a, 0x4f, 0x69, 0x84, 0x36, 0x56, - 0xea, 0xf8, 0xf2, 0xc8, 0xb0, 0xa4, 0xc7, 0xc2, 0xc4, 0x40, 0x99, 0x9b, - 0x70, 0x05, 0xfa, 0x50, 0x8b, 0x90, 0xf0, 0x79, 0xe7, 0xb0, 0xe9, 0xa0, - 0x7d, 0x6a, 0xcc, 0xd4, 0x60, 0xdd, 0x48, 0x50, 0xac, 0xc8, 0x38, 0xaf, - 0x3a, 0xf2, 0xe0, 0x75, 0xda, 0x51, 0x03, 0xaf, 0x7c, 0xd2, 0xf1, 0x39, - 0xa4, 0xb2, 0x1b, 0xd8, 0xb2, 0x57, 0x22, 0x38, 0xa5, 0x3f, 0x27, 0xaf, - 0x76, 0x77, 0xda, 0x9f, 0x60, 0x6d, 0x28, 0x62, 0xf4, 0xd5, 0x57, 0xde, - 0x40, 0xfe, 0xd8, 0xf3, 0xe9, 0x44, 0x9e, 0xd6, 0xa2, 0x82, 0x28, 0xb2, - 0xf2, 0xaa, 0x33, 0xe2, 0xfb, 0x95, 0xff, 0x7f, 0xcd, 0x38, 0x10, 0xf0, - 0xa5, 0xcf, 0x16, 0xcb, 0xd1, 0x2c, 0xad, 0x0c, 0x78, 0x9b, 0x27, 0xf8, - 0x39, 0x4c, 0x2a, 0x89, 0xa3, 0x0d, 0x54, 0xa3, 0x15, 0xc9, 0xaf, 0x7b, - 0x95, 0x65, 0xa3, 0x38, 0xef, 0xaa, 0x11, 0xd5, 0xc6, 0xd9, 0xdd, 0xdd, - 0x7b, 0xf2, 0xf4, 0x59, 0x77, 0xa0, 0x52, 0x1a, 0x18, 0x04, 0x14, 0xb3, - 0x54, 0x55, 0x19, 0x69, 0x22, 0x96, 0xe3, 0x19, 0xd6, 0x96, 0x6f, 0x75, - 0x36, 0x30, 0x0f, 0xe3, 0xee, 0x5e, 0x49, 0x6f, 0x7f, 0xe0, 0x7e, 0x5e, - 0xa1, 0x8b, 0x3f, 0xa4, 0x93, 0x57, 0x6e, 0x86, 0x7f, 0xe0, 0xb9, 0xbc, - 0xd2, 0x49, 0xd0, 0xbe, 0x5a, 0x2c, 0x7d, 0xb1, 0xb5, 0xd1, 0xca, 0xd5, - 0x5a, 0x37, 0xd7, 0x36, 0x71, 0x03, 0x93, 0x86, 0xa7, 0xab, 0x3f, 0x11, - 0xcb, 0x2d, 0x64, 0x55, 0x1f, 0x48, 0xbe, 0xfd, 0xd0, 0xa7, 0x56, 0xfa, - 0xdc, 0x4a, 0xdf, 0xb3, 0xeb, 0x68, 0xc6, 0x89, 0x23, 0xbc, 0x11, 0x3d, - 0xcd, 0x26, 0x98, 0xc2, 0xd6, 0xa1, 0x82, 0x40, 0x96, 0xc1, 0x8f, 0x74, - 0xf8, 0xd5, 0x49, 0x57, 0x1d, 0xb4, 0xa2, 0xb8, 0xf5, 0xda, 0x8c, 0x6b, - 0x2e, 0x6a, 0x42, 0x51, 0x08, 0x36, 0x0c, 0x1e, 0x3c, 0x66, 0x7f, 0x23, - 0xf7, 0x2b, 0xa9, 0x3f, 0xd4, 0x99, 0xde, 0x39, 0x53, 0x36, 0xd7, 0xe5, - 0xf8, 0x24, 0x6c, 0x06, 0xa8, 0x2e, 0xe2, 0x78, 0x84, 0xa5, 0x7a, 0xe1, - 0xb2, 0x06, 0xfa, 0xaf, 0x9d, 0x37, 0xc0, 0x45, 0xa9, 0xeb, 0xa3, 0xf4, - 0x95, 0x70, 0x13, 0x63, 0x10, 0x1d, 0x57, 0x82, 0x4a, 0x28, 0x21, 0xe4, - 0x1d, 0xf0, 0x65, 0x8c, 0x92, 0x4a, 0x61, 0x23, 0x11, 0x0b, 0x99, 0x7b, - 0xbe, 0x74, 0x35, 0x8b, 0x3e, 0x8f, 0x80, 0xfb, 0x2f, 0x6f, 0x69, 0x1c, - 0x7a, 0xa5, 0xbe, 0x2b, 0x5e, 0x52, 0xe5, 0xc0, 0x79, 0x3e, 0x02, 0xaf, - 0xad, 0x8a, 0x05, 0xd2, 0x82, 0x4c, 0x74, 0xb4, 0x52, 0xf5, 0x9f, 0x5b, - 0xe8, 0xfe, 0x19, 0x87, 0xe0, 0x25, 0x6f, 0x03, 0xbe, 0xfe, 0xbc, 0x2b, - 0x26, 0x3c, 0xf7, 0x2e, 0x0f, 0xa3, 0xe6, 0x59, 0x11, 0x02, 0x0d, 0xe7, - 0x93, 0x5d, 0x39, 0x38, 0x17, 0x91, 0xc5, 0x38, 0xc9, 0x74, 0x0e, 0x75, - 0x2a, 0x4d, 0xa6, 0x13, 0x2d, 0xab, 0xa6, 0xb2, 0x50, 0x4f, 0x1b, 0x4f, - 0x38, 0x83, 0x97, 0x65, 0xc7, 0x2e, 0x07, 0xe0, 0xe0, 0xbd, 0xae, 0x43, - 0x87, 0x61, 0x91, 0x3a, 0x01, 0xbb, 0xcb, 0x13, 0x2b, 0x39, 0xb6, 0xa1, - 0xc9, 0x65, 0x5e, 0x96, 0x0f, 0x27, 0x56, 0x04, 0xa2, 0x83, 0x8f, 0xd5, - 0x97, 0x1c, 0xe4, 0xc6, 0x11, 0x79, 0xcd, 0x89, 0x30, 0xda, 0xe9, 0x2b, - 0x5e, 0xee, 0xdd, 0xc1, 0x75, 0x7a, 0x25, 0x8b, 0x41, 0x2c, 0xf2, 0x3a, - 0xd9, 0xa6, 0x3f, 0x7b, 0xf4, 0xf9, 0x1e, 0xcb, 0x64, 0xfc, 0xcb, 0x13, - 0xf8, 0xed, 0xc3, 0x9b, 0x3f, 0x38, 0x1b, 0xee, 0x5c, 0xf0, 0x2f, 0xa9, - 0xbb, 0xf1, 0xd5, 0x24, 0xad, 0xa3, 0x04, 0x99, 0x2b, 0xf0, 0xa6, 0x17, - 0x34, 0x7b, 0x81, 0xb9, 0x19, 0xc0, 0x6b, 0x19, 0xa4, 0x93, 0xc2, 0x87, - 0xb9, 0xa9, 0x63, 0x51, 0xc5, 0x74, 0x96, 0xba, 0x53, 0x35, 0x98, 0x70, - 0xa0, 0x2d, 0xee, 0xd5, 0xe4, 0x7e, 0xab, 0x17, 0x06, 0x0f, 0x59, 0xa5, - 0x4d, 0x57, 0x0e, 0x18, 0x59, 0x68, 0xdc, 0xfd, 0xa6, 0xd6, 0xb6, 0x62, - 0x2c, 0x07, 0x4d, 0x97, 0xc1, 0x36, 0xa7, 0xf5, 0x1d, 0xac, 0x96, 0x87, - 0x92, 0x80, 0x8f, 0xb4, 0x28, 0xb7, 0xb8, 0x9b, 0x64, 0x5a, 0x40, 0x53, - 0xe7, 0x41, 0x6f, 0x44, 0xc1, 0xba, 0x1b, 0x4a, 0x06, 0xba, 0xea, 0x72, - 0xbd, 0xaa, 0x6d, 0xf8, 0x83, 0x84, 0xb7, 0x1d, 0xcf, 0x04, 0x14, 0x1e, - 0x64, 0x3b, 0xed, 0xcb, 0x7d, 0xa9, 0x42, 0x50, 0xff, 0xf5, 0x20, 0x3a, - 0x45, 0xe8, 0x5b, 0x11, 0x4b, 0x66, 0xb1, 0xdd, 0xa9, 0x46, 0x01, 0x44, - 0x2e, 0x22, 0x75, 0x6f, 0x48, 0xa1, 0x2e, 0x4e, 0xe6, 0x34, 0x32, 0x02, - 0x8e, 0x9d, 0x57, 0x33, 0x45, 0xa2, 0x50, 0x09, 0xa4, 0x07, 0x2b, 0xb4, - 0x7b, 0x0e, 0x65, 0xdb, 0x5c, 0xd9, 0xe8, 0x80, 0x48, 0x83, 0x46, 0xc4, - 0xa1, 0xaf, 0x22, 0x67, 0xc0, 0xca, 0x1d, 0xe1, 0x4b, 0xce, 0x68, 0x22, - 0x66, 0x16, 0x2d, 0xed, 0x2b, 0x3e, 0x2c, 0x6a, 0x0d, 0x94, 0xc5, 0x73, - 0x67, 0xd2, 0xe9, 0x40, 0x53, 0x9c, 0x26, 0x4e, 0x9d, 0x56, 0x30, 0x5e, - 0xc1, 0xc5, 0xcd, 0x14, 0x1a, 0x49, 0x04, 0x0c, 0xef, 0x5f, 0xe0, 0x41, - 0xf2, 0xb8, 0xe2, 0x3b, 0xfa, 0x85, 0x2f, 0xf9, 0x51, 0x4e, 0x3b, 0x9d, - 0xe4, 0x72, 0x1d, 0xa0, 0x57, 0xe0, 0xa6, 0x38, 0xd8, 0xcb, 0x37, 0xa7, - 0x91, 0x65, 0x68, 0x5f, 0x79, 0xe1, 0xd0, 0xa2, 0x76, 0x30, 0x45, 0xb5, - 0x85, 0x88, 0x04, 0xa4, 0x4f, 0xc9, 0xcd, 0x26, 0x6b, 0xcb, 0x49, 0x5e, - 0x11, 0x2f, 0x4e, 0xe5, 0x98, 0x06, 0x4f, 0xc8, 0xab, 0x4c, 0x3b, 0x44, - 0x1a, 0x5d, 0x5e, 0x82, 0x6e, 0x2f, 0xea, 0xf2, 0x50, 0xf9, 0x8b, 0x2e, - 0xd6, 0x13, 0x1f, 0x07, 0xcb, 0xd7, 0x1d, 0xb4, 0x9c, 0x3c, 0x7e, 0xe6, - 0xd5, 0x17, 0x95, 0x55, 0xc2, 0xe7, 0xd6, 0xd4, 0x2b, 0x89, 0x96, 0x6d, - 0x48, 0xd9, 0xf6, 0x6e, 0xd0, 0xfe, 0xab, 0x43, 0x6a, 0x45, 0x0a, 0xa3, - 0xc9, 0x9e, 0x40, 0xa0, 0x76, 0x9f, 0xa5, 0x48, 0x45, 0x69, 0x34, 0xf4, - 0xe1, 0x93, 0x7b, 0x69, 0xec, 0xc7, 0x85, 0x07, 0x09, 0x47, 0x13, 0x12, - 0x30, 0x6e, 0x4b, 0xbb, 0x99, 0x8a, 0xa6, 0x77, 0x9f, 0xc1, 0xae, 0x00, - 0x3e, 0xb3, 0x3b, 0x40, 0x6a, 0x82, 0x87, 0xd2, 0x71, 0x0d, 0x38, 0x75, - 0xbd, 0x83, 0x05, 0xed, 0x98, 0x99, 0xc4, 0x29, 0xf1, 0xb6, 0xca, 0x6d, - 0xfc, 0x6a, 0x91, 0x8e, 0x51, 0xe7, 0xf4, 0xd5, 0x17, 0x93, 0xec, 0x9a, - 0xb9, 0x55, 0x8f, 0x2e, 0x56, 0xfe, 0xd9, 0xe1, 0x87, 0xf7, 0xb4, 0x53, - 0x19, 0x30, 0xce, 0x8a, 0xc8, 0xed, 0xf6, 0xf7, 0x9a, 0xf0, 0x25, 0x6a, - 0x78, 0x92, 0x8d, 0xb5, 0x6d, 0xd7, 0xb4, 0xec, 0x07, 0xb5, 0xef, 0xbe, - 0x08, 0xfb, 0xb2, 0xc5, 0x89, 0xb5, 0x65, 0x29, 0x50, 0x37, 0x4d, 0x4b, - 0xb9, 0xbe, 0x1d, 0xae, 0x3a, 0x4c, 0x5a, 0x5c, 0x63, 0x42, 0xee, 0xaa, - 0xa9, 0xc6, 0xcb, 0x77, 0xbf, 0xe8, 0x4a, 0xa8, 0x63, 0xf7, 0x65, 0x17, - 0x5c, 0x8b, 0x79, 0x91, 0xa1, 0xe8, 0xea, 0x85, 0xd4, 0x95, 0x9b, 0xb0, - 0x2f, 0xf2, 0x82, 0x16, 0x0f, 0xac, 0x44, 0xa7, 0x30, 0xc3, 0x30, 0xc5, - 0x31, 0x0c, 0xac, 0x81, 0x61, 0xc0, 0x97, 0xcd, 0x63, 0x64, 0x9a, 0x51, - 0x29, 0x2e, 0x69, 0xbd, 0x68, 0x21, 0x8a, 0x21, 0xd1, 0xb7, 0x60, 0x87, - 0xab, 0x18, 0x36, 0x97, 0xf3, 0x05, 0xa7, 0x75, 0x8d, 0x51, 0x55, 0x57, - 0xcf, 0xd2, 0x20, 0x7a, 0x37, 0x17, 0xdc, 0xbb, 0x84, 0xd5, 0xe3, 0xd0, - 0x5f, 0xde, 0x73, 0x7e, 0x7f, 0x5a, 0xa8, 0x8a, 0x3f, 0x31, 0x1c, 0xb0, - 0x98, 0x43, 0xc4, 0x6c, 0xad, 0xfd, 0xf2, 0xd5, 0x9a, 0x73, 0x34, 0x82, - 0x9a, 0xa5, 0x21, 0x09, 0xb8, 0x84, 0x5f, 0x65, 0x40, 0xec, 0x9d, 0x3b, - 0x7e, 0x7d, 0x7c, 0x71, 0x71, 0x7c, 0xc1, 0xeb, 0x7d, 0x50, 0xc5, 0xaf, - 0xbf, 0xd1, 0xc8, 0x68, 0x8f, 0xcc, 0x66, 0x11, 0x61, 0xcd, 0xb2, 0xc6, - 0xc2, 0x09, 0x15, 0x4a, 0x69, 0x23, 0x32, 0x3f, 0xb7, 0x64, 0xb9, 0x8b, - 0x41, 0x18, 0xd6, 0x44, 0xc4, 0x03, 0x3a, 0xcb, 0xfd, 0x94, 0xaf, 0x15, - 0x81, 0xa1, 0x0f, 0x85, 0x89, 0x8d, 0xc8, 0x5e, 0xcd, 0xb5, 0xfe, 0x08, - 0xae, 0x6a, 0xd3, 0x1d, 0x03, 0xb9, 0x74, 0xa0, 0x21, 0x5c, 0x89, 0x7a, - 0xaf, 0x7d, 0x6d, 0x71, 0xcc, 0xf7, 0x8a, 0x0f, 0x28, 0xab, 0x4a, 0x58, - 0x89, 0xa2, 0x5c, 0x2e, 0xd2, 0x89, 0x33, 0xee, 0xd2, 0xe7, 0x24, 0xef, - 0x45, 0x72, 0xc4, 0x0b, 0x1b, 0x31, 0x9c, 0x89, 0x66, 0x7b, 0x08, 0x8d, - 0x6b, 0x92, 0x54, 0xee, 0x4d, 0x63, 0x88, 0xf9, 0x97, 0xa2, 0x95, 0x8a, - 0x99, 0x5d, 0xcb, 0xd8, 0x52, 0xc2, 0x4f, 0x60, 0x54, 0x64, 0x56, 0x61, - 0xb1, 0x02, 0x21, 0x5b, 0x60, 0xd3, 0xd5, 0xcc, 0x07, 0x42, 0xfa, 0x82, - 0x82, 0x17, 0x48, 0xd4, 0xc8, 0xf7, 0xa3, 0x1f, 0x8b, 0x74, 0xfc, 0x93, - 0xbf, 0x39, 0x10, 0xc2, 0xec, 0x63, 0x15, 0x25, 0xb6, 0x80, 0x26, 0xaf, - 0x0b, 0xa5, 0xba, 0xaf, 0x24, 0x48, 0xbd, 0x1b, 0x1e, 0x5f, 0x44, 0x07, - 0x5f, 0x31, 0xba, 0xd3, 0xbf, 0xb6, 0xbb, 0xfc, 0x9c, 0xde, 0x0c, 0xb6, - 0xb7, 0x9a, 0x92, 0x9b, 0x98, 0xe1, 0x5b, 0xeb, 0x26, 0x84, 0x1b, 0x9b, - 0x5a, 0xf5, 0x98, 0x20, 0x77, 0xb2, 0xb2, 0x85, 0x1b, 0xd1, 0x07, 0x37, - 0xf1, 0x63, 0xb6, 0x90, 0x0f, 0x58, 0xb8, 0x89, 0x92, 0xcb, 0x2f, 0x0e, - 0x08, 0xdb, 0x1a, 0x1d, 0x7d, 0xd1, 0x50, 0x33, 0x65, 0x93, 0x0e, 0xa2, - 0xee, 0x9b, 0xec, 0x67, 0x12, 0x04, 0xe2, 0xed, 0x27, 0x83, 0x9d, 0x68, - 0xf3, 0xbb, 0x74, 0xfe, 0xe2, 0xd9, 0x9f, 0xa3, 0x93, 0xad, 0x6e, 0x25, - 0xc8, 0x53, 0x60, 0x9c, 0x47, 0xf1, 0xfc, 0xd6, 0xed, 0xd8, 0x19, 0x4e, - 0xb5, 0x84, 0xae, 0x18, 0x18, 0xa8, 0x54, 0x26, 0x5c, 0xdb, 0x22, 0x12, - 0x8d, 0x34, 0x5e, 0x34, 0xfa, 0xd6, 0x01, 0xd2, 0xb1, 0x4e, 0x4f, 0x4f, - 0x4d, 0x78, 0xe9, 0x5e, 0x3c, 0x6b, 0x34, 0xf1, 0xd4, 0xb5, 0xf1, 0x4e, - 0xda, 0xf8, 0x85, 0x4d, 0xec, 0x0d, 0x76, 0xf6, 0xa2, 0xcd, 0xb3, 0xe1, - 0xf6, 0x9e, 0x6b, 0xa1, 0xd9, 0xc4, 0x1e, 0x9a, 0xe0, 0x87, 0xaa, 0x2f, - 0x3f, 0xe5, 0xfe, 0x7f, 0x4c, 0xe6, 0x3f, 0x45, 0x9b, 0xdf, 0xef, 0xee, - 0x52, 0x03, 0x7f, 0x8e, 0x0e, 0x4e, 0xbe, 0x8f, 0x9e, 0x0e, 0xa8, 0xb1, - 0xb7, 0xf1, 0x9d, 0x36, 0xa7, 0x18, 0x4e, 0x43, 0x34, 0x42, 0xdf, 0x37, - 0xda, 0x78, 0x56, 0x6b, 0xe3, 0x94, 0xf4, 0xc0, 0x07, 0xba, 0x52, 0x76, - 0x06, 0x4f, 0xf6, 0xa2, 0xf4, 0xd9, 0x67, 0xcf, 0xad, 0x21, 0x6d, 0x03, - 0xdf, 0x57, 0x6d, 0x93, 0x92, 0xe5, 0x4b, 0x62, 0xce, 0xf1, 0x03, 0x31, - 0x33, 0x70, 0x08, 0x40, 0xa7, 0xde, 0xc4, 0xf9, 0x44, 0xc9, 0x8d, 0x8b, - 0xaa, 0xd0, 0x4e, 0x29, 0x3a, 0x58, 0x02, 0x23, 0x25, 0x5d, 0x9a, 0xfb, - 0x8d, 0xe1, 0xb0, 0x2e, 0x6a, 0x8f, 0xfe, 0x39, 0x7a, 0x33, 0x3c, 0x39, - 0xa6, 0x19, 0xed, 0xd0, 0xd0, 0xfc, 0x1a, 0xca, 0x80, 0xf0, 0x15, 0x16, - 0x97, 0x56, 0x75, 0x83, 0xf3, 0x7e, 0xd0, 0x86, 0xc9, 0xd8, 0x12, 0xd1, - 0xc5, 0xb0, 0x8d, 0x59, 0x51, 0xa0, 0xdf, 0x77, 0x44, 0x6b, 0xfd, 0x83, - 0x6b, 0x56, 0x19, 0xe4, 0x9a, 0x45, 0xd7, 0xdf, 0x64, 0x73, 0x3a, 0x26, - 0x79, 0x96, 0x73, 0x98, 0x47, 0xb7, 0x22, 0x29, 0x7c, 0x73, 0x74, 0x2c, - 0x79, 0x6a, 0x6f, 0xe2, 0x39, 0xb1, 0x48, 0x46, 0x74, 0x28, 0x6e, 0xd9, - 0xeb, 0x2e, 0xce, 0x1b, 0x79, 0xff, 0x74, 0x35, 0x7f, 0xa0, 0x7d, 0xfc, - 0x74, 0xb0, 0xcb, 0xa8, 0x76, 0xac, 0xe5, 0xbe, 0x7e, 0x43, 0x7f, 0xef, - 0x3e, 0xed, 0x46, 0xfc, 0x55, 0x55, 0x63, 0xb7, 0xf3, 0xba, 0x71, 0x78, - 0x76, 0xf6, 0xcd, 0x89, 0x04, 0x60, 0x1c, 0xaa, 0x11, 0x95, 0x05, 0x2b, - 0xa7, 0x05, 0x0b, 0x73, 0x25, 0x6d, 0xcd, 0xc7, 0x8f, 0xc3, 0xf5, 0x76, - 0x9b, 0x24, 0x0b, 0xc0, 0xd0, 0xd5, 0x38, 0x42, 0xa9, 0x2c, 0x5a, 0x46, - 0xc6, 0x82, 0x74, 0x3a, 0xa9, 0xa2, 0x51, 0x14, 0x8c, 0x10, 0x66, 0x06, - 0xdb, 0xd1, 0xca, 0xe5, 0xc2, 0xc6, 0xbe, 0x08, 0x24, 0x86, 0xe8, 0xa2, - 0x58, 0xcd, 0xe0, 0x2c, 0x55, 0xe0, 0xe9, 0x45, 0xd5, 0x75, 0xbb, 0xc3, - 0xa4, 0xec, 0xcb, 0xa0, 0xf7, 0xd5, 0x46, 0xdb, 0x55, 0x83, 0x93, 0x33, - 0x97, 0x2d, 0x14, 0x93, 0x16, 0x86, 0xe2, 0xd5, 0x82, 0x8b, 0x55, 0x4e, - 0x5d, 0x3d, 0x61, 0x14, 0x63, 0x4d, 0x10, 0x4b, 0xf4, 0xf6, 0xe0, 0xcd, - 0xf1, 0xab, 0x6f, 0x0f, 0x4e, 0xdf, 0x1d, 0xd3, 0x2b, 0x8c, 0xca, 0xba, - 0xe9, 0xe3, 0x8d, 0x30, 0xc6, 0x59, 0x3a, 0xce, 0xa6, 0xec, 0x53, 0xea, - 0xfe, 0xb9, 0xbb, 0x21, 0xe1, 0x95, 0x51, 0x87, 0xdf, 0xda, 0x95, 0xd7, - 0x88, 0x2e, 0xf8, 0xaf, 0x3d, 0xf9, 0x6b, 0xef, 0xcf, 0x9d, 0xad, 0xca, - 0xa4, 0x1b, 0x5a, 0x31, 0xd3, 0xcb, 0xbd, 0xc4, 0xd5, 0xa1, 0x4a, 0x0a, - 0x62, 0x7a, 0x65, 0x55, 0x3a, 0xe6, 0x91, 0xb1, 0xab, 0x8d, 0x9f, 0xdd, - 0x1c, 0xad, 0x42, 0x9d, 0xbb, 0xc3, 0x2f, 0xbd, 0x82, 0x70, 0xd1, 0xe1, - 0x9c, 0x27, 0x15, 0x37, 0xe0, 0xac, 0xe6, 0x36, 0xac, 0x89, 0xe4, 0x61, - 0xc1, 0xe1, 0x5b, 0x9b, 0x1d, 0xf9, 0xe5, 0xd5, 0xd1, 0xc1, 0xe5, 0x31, - 0xbf, 0x60, 0xdd, 0x5b, 0x59, 0x6b, 0x8b, 0xbc, 0xe5, 0xf1, 0x6c, 0x76, - 0xe4, 0xc3, 0x57, 0x3c, 0xa1, 0x8e, 0xd4, 0x18, 0x10, 0x80, 0xc5, 0xda, - 0xb8, 0xb2, 0xb9, 0x06, 0x31, 0x06, 0x29, 0x7a, 0x85, 0xc5, 0x89, 0x6c, - 0x76, 0xe4, 0xbb, 0x8e, 0xb3, 0xd7, 0x6a, 0xe1, 0x56, 0x75, 0x4e, 0x4e, - 0x10, 0x97, 0xdb, 0x48, 0x0f, 0x92, 0x5a, 0x49, 0x7e, 0x7f, 0xd4, 0x35, - 0x21, 0x16, 0xa6, 0x00, 0x64, 0xce, 0x6d, 0xbc, 0x66, 0x14, 0xb2, 0x4d, - 0x29, 0xcb, 0x76, 0xf7, 0x9e, 0xfc, 0x19, 0xeb, 0xf9, 0xaa, 0xb3, 0x4d, - 0x77, 0x43, 0xe7, 0xcf, 0xdc, 0x75, 0x5a, 0x06, 0xe5, 0x56, 0xb4, 0x1b, - 0xd6, 0xa5, 0x94, 0xa2, 0x24, 0x48, 0x85, 0x77, 0x1d, 0xb6, 0x30, 0x99, - 0x17, 0x16, 0xf4, 0x5e, 0xb2, 0x07, 0x2c, 0xc9, 0xdc, 0xdc, 0xf7, 0xd8, - 0x2f, 0x94, 0x0c, 0x9c, 0x3b, 0x68, 0x52, 0xe9, 0x2e, 0xbc, 0x3f, 0x7a, - 0xf2, 0xae, 0xcc, 0x51, 0x8b, 0xc0, 0x70, 0x9f, 0xb3, 0x95, 0x25, 0x18, - 0xa0, 0x2f, 0xc8, 0xe3, 0xb2, 0x67, 0x0d, 0xa9, 0x78, 0xa4, 0xb6, 0x1c, - 0x53, 0x44, 0x20, 0x12, 0x10, 0x6b, 0x59, 0x41, 0x4e, 0x12, 0x7f, 0x7f, - 0x10, 0xe6, 0x60, 0x77, 0x76, 0x3c, 0xe2, 0x4c, 0x39, 0x17, 0x4d, 0x1d, - 0x68, 0xe1, 0x6e, 0xe9, 0xed, 0xf8, 0xa5, 0x01, 0xa0, 0x00, 0x5f, 0x94, - 0xb2, 0x96, 0x85, 0xb3, 0x19, 0xc1, 0xb7, 0xa8, 0xcf, 0x56, 0xf7, 0xa9, - 0x96, 0xa7, 0x80, 0x69, 0x88, 0x0a, 0x2f, 0xba, 0x31, 0xb1, 0x9a, 0x79, - 0x92, 0x3f, 0x1a, 0xe2, 0xd0, 0xe2, 0x7a, 0xc2, 0x14, 0x83, 0x34, 0x17, - 0x7e, 0x67, 0x30, 0x18, 0xf8, 0x32, 0x20, 0xbc, 0x2d, 0xea, 0x71, 0x02, - 0xa2, 0x78, 0x80, 0x7a, 0x86, 0x35, 0xde, 0x84, 0x20, 0x0f, 0x61, 0x7a, - 0x4b, 0xc3, 0x5d, 0xd4, 0x1a, 0xe1, 0x8e, 0x46, 0x60, 0xd3, 0xe8, 0x6a, - 0xb7, 0x5d, 0x2b, 0x32, 0x70, 0xdb, 0xb6, 0x09, 0x8f, 0x8c, 0x4d, 0x6c, - 0x8d, 0x45, 0x8c, 0xd4, 0x7c, 0xc7, 0xa7, 0x32, 0xb7, 0x16, 0x4c, 0xc1, - 0x9c, 0xae, 0x2f, 0x35, 0x50, 0xb1, 0x25, 0xb2, 0x68, 0x3a, 0x14, 0x2d, - 0x70, 0xc3, 0x4c, 0x2e, 0xbb, 0x47, 0x26, 0x27, 0xf2, 0x45, 0x39, 0xfa, - 0x63, 0x2e, 0xa6, 0x01, 0xbb, 0x41, 0x1c, 0xe6, 0xaf, 0xb5, 0x33, 0x11, - 0xd3, 0x2c, 0xeb, 0xcb, 0x90, 0xfb, 0x35, 0xfb, 0x45, 0x73, 0xbc, 0x8b, - 0x58, 0xb1, 0xb1, 0x48, 0x6c, 0xcb, 0x66, 0x70, 0x72, 0xe9, 0xe4, 0xbd, - 0x99, 0x84, 0x63, 0xbc, 0xfa, 0x92, 0x25, 0x6d, 0x09, 0x2a, 0xc6, 0x3d, - 0x34, 0x4f, 0xf6, 0x31, 0xef, 0xf8, 0xd8, 0x5a, 0x74, 0xae, 0xf1, 0xda, - 0xda, 0xf8, 0x5b, 0xb9, 0xca, 0xba, 0x68, 0x45, 0xc5, 0x9a, 0x0c, 0x41, - 0x39, 0xe0, 0x7b, 0x51, 0x7c, 0xcf, 0xd5, 0x68, 0x88, 0x06, 0xc5, 0x4d, - 0x26, 0x16, 0x99, 0xd3, 0xc0, 0xae, 0xe8, 0x66, 0x68, 0xe5, 0x9e, 0x63, - 0x5f, 0xef, 0xd9, 0x00, 0x61, 0x05, 0xe4, 0xcd, 0x0c, 0x78, 0x29, 0xca, - 0x89, 0x30, 0x28, 0x97, 0x0a, 0xea, 0xa6, 0x9a, 0xf3, 0xc8, 0x89, 0x45, - 0x0f, 0x95, 0x6e, 0x52, 0x44, 0x03, 0xb2, 0x8d, 0x43, 0xa2, 0x28, 0x6c, - 0xb5, 0xa4, 0xd6, 0xb7, 0x75, 0xe2, 0xbc, 0xd1, 0x30, 0x37, 0xb1, 0x3c, - 0x3d, 0xcf, 0xe6, 0x7d, 0x57, 0x5f, 0xc8, 0x45, 0x5c, 0xe5, 0xe9, 0xf5, - 0xb5, 0x68, 0x6c, 0x51, 0x7d, 0x6a, 0xed, 0x44, 0x76, 0xca, 0xab, 0xc2, - 0x21, 0x9b, 0xab, 0x75, 0xab, 0x79, 0xe9, 0xea, 0x98, 0xaa, 0xc5, 0xa5, - 0x42, 0xcc, 0xe6, 0x81, 0x94, 0x7d, 0x2b, 0x51, 0x07, 0x06, 0x69, 0x96, - 0x6c, 0xf6, 0xaa, 0x7a, 0x8c, 0xcf, 0x2e, 0x36, 0x50, 0xde, 0x7e, 0xee, - 0xb3, 0x4a, 0x6d, 0xd3, 0x01, 0x2a, 0xe3, 0xe3, 0x4d, 0x26, 0x6c, 0x57, - 0x9e, 0xf1, 0x55, 0x7c, 0xef, 0x82, 0x9d, 0x04, 0x65, 0x77, 0x14, 0x7b, - 0x8d, 0x6b, 0x23, 0xaa, 0x58, 0x77, 0x0b, 0xd4, 0xad, 0x56, 0x3e, 0x94, - 0xdd, 0x25, 0x1e, 0xd9, 0xc8, 0x1b, 0x18, 0x3d, 0x18, 0x9d, 0x9e, 0x7e, - 0xc7, 0x4c, 0x6a, 0xee, 0x5c, 0xc7, 0xaf, 0x30, 0xc9, 0xda, 0xaa, 0x0c, - 0xa2, 0xa0, 0x49, 0x31, 0x93, 0x64, 0x21, 0x8b, 0x97, 0xb1, 0xa9, 0x97, - 0xda, 0x5a, 0xd4, 0x58, 0x7e, 0xa0, 0xed, 0x07, 0xaa, 0x89, 0xe0, 0xc8, - 0x2a, 0x55, 0x15, 0x2e, 0x32, 0xce, 0x7b, 0x7b, 0x6d, 0x96, 0x1d, 0xb7, - 0x49, 0x1d, 0xa4, 0x9c, 0x8c, 0x94, 0x08, 0x40, 0x03, 0x2c, 0xd0, 0x39, - 0x87, 0xfd, 0xc1, 0x34, 0xe6, 0x90, 0x95, 0x4c, 0x62, 0x01, 0xb0, 0x65, - 0x20, 0x6a, 0x18, 0xd2, 0x6a, 0x3c, 0xb5, 0x71, 0xfc, 0x5c, 0x6c, 0x86, - 0xd0, 0x1a, 0x60, 0xe9, 0xb8, 0x19, 0xa2, 0x12, 0x04, 0xe5, 0x8e, 0x8d, - 0xb9, 0x3f, 0x9e, 0x7e, 0x39, 0xaa, 0x9c, 0xd1, 0x0f, 0x1d, 0xd9, 0xf3, - 0x8b, 0xb3, 0xaf, 0x2e, 0x8e, 0x87, 0xc3, 0xe8, 0xcd, 0xf1, 0xa5, 0xa8, - 0xfc, 0x97, 0x12, 0x07, 0x27, 0xe0, 0xc4, 0x70, 0x33, 0x18, 0x42, 0x82, - 0xc5, 0x9a, 0x98, 0x3d, 0x01, 0x68, 0xaa, 0x19, 0xbb, 0xd0, 0x20, 0xca, - 0x41, 0x9d, 0x9f, 0x6a, 0xf8, 0xdc, 0x0d, 0x0c, 0xfd, 0x08, 0x66, 0x82, - 0x27, 0xd2, 0xd9, 0xcd, 0xbd, 0x35, 0x15, 0x32, 0xb2, 0x84, 0x37, 0xdd, - 0x18, 0xe7, 0xf2, 0xd6, 0x73, 0xbe, 0xbd, 0xe9, 0x27, 0xa6, 0xf7, 0xfb, - 0xe8, 0xd2, 0x8a, 0x75, 0xff, 0x9e, 0xd4, 0x60, 0xa5, 0x8f, 0xdf, 0x47, - 0xdf, 0x53, 0x9b, 0x13, 0x5a, 0x75, 0x2d, 0xc0, 0x38, 0x44, 0x91, 0x0d, - 0x5f, 0xc8, 0x04, 0x25, 0x20, 0xc2, 0xe2, 0x3a, 0xcb, 0x3c, 0xff, 0x40, - 0xc1, 0x5f, 0x24, 0xcc, 0x0b, 0xa8, 0x80, 0x06, 0xd3, 0xb9, 0x9e, 0xf9, - 0x6d, 0x00, 0x65, 0x9e, 0x26, 0x57, 0x25, 0x04, 0x12, 0xee, 0x8e, 0x9a, - 0xdb, 0x61, 0xf8, 0xc2, 0xdd, 0x37, 0xfc, 0xd1, 0x4e, 0xf4, 0xe4, 0xb3, - 0xe7, 0x3b, 0x9f, 0xc9, 0xaf, 0xf6, 0xef, 0x8b, 0xa7, 0x3b, 0x0a, 0x03, - 0x4a, 0x7f, 0x3d, 0xdd, 0x7f, 0xba, 0xbb, 0xcf, 0xf0, 0x44, 0x3b, 0xfb, - 0x3b, 0xf4, 0xff, 0x4f, 0xf5, 0x13, 0xc6, 0x60, 0x7a, 0xb1, 0xf7, 0xd9, - 0xa7, 0x08, 0x83, 0x61, 0xfa, 0x98, 0x52, 0x27, 0xfd, 0x32, 0xeb, 0x03, - 0xc3, 0x01, 0x42, 0xd0, 0xef, 0xab, 0x06, 0x49, 0xf6, 0xab, 0x73, 0x21, - 0x45, 0x9e, 0xb8, 0x2b, 0xcf, 0x6c, 0xc6, 0x55, 0x49, 0xe3, 0x0f, 0x4b, - 0xc8, 0xba, 0x69, 0xe8, 0xdb, 0x52, 0xc5, 0x13, 0xa0, 0x28, 0x95, 0x77, - 0x48, 0x64, 0x94, 0x1c, 0xaa, 0xf0, 0xe5, 0x5f, 0xd2, 0xb5, 0xe5, 0x1a, - 0x6e, 0x00, 0x55, 0x45, 0xb7, 0x4a, 0xdf, 0x1b, 0xcb, 0x12, 0x12, 0x8d, - 0x04, 0xa5, 0x49, 0x6b, 0x85, 0x44, 0x7f, 0x69, 0x7f, 0x62, 0xc0, 0xe2, - 0xb7, 0x94, 0x1a, 0xa2, 0x66, 0x6f, 0x56, 0x51, 0xb5, 0xad, 0xaf, 0x0a, - 0xf1, 0x6c, 0xf8, 0xed, 0xf7, 0x2b, 0x15, 0x54, 0x1e, 0x75, 0x98, 0x22, - 0x52, 0xcf, 0xa5, 0x65, 0xca, 0x8d, 0xe6, 0xde, 0x2d, 0xc2, 0xf6, 0x3e, - 0xa6, 0x39, 0x3f, 0x23, 0x50, 0xb0, 0xdb, 0xb9, 0x7e, 0xb0, 0x39, 0xa9, - 0x44, 0xb4, 0xb9, 0x62, 0xa1, 0x86, 0x8b, 0xe5, 0x2a, 0x0a, 0xe2, 0x55, - 0x47, 0xb2, 0x7d, 0x79, 0x43, 0xc5, 0xcf, 0x02, 0x99, 0x41, 0x22, 0x28, - 0xdc, 0x65, 0xb8, 0xed, 0xe5, 0x79, 0xa3, 0xec, 0x46, 0x57, 0x4c, 0x8d, - 0x41, 0x7f, 0xda, 0x07, 0xce, 0x93, 0x3b, 0x74, 0x8f, 0x4e, 0xcd, 0x07, - 0xb7, 0xbb, 0x6a, 0x36, 0x9b, 0x2e, 0x58, 0xbc, 0xed, 0x48, 0xfa, 0xe7, - 0x10, 0x3f, 0xee, 0x9a, 0x0b, 0x2f, 0x22, 0x94, 0x32, 0x52, 0x24, 0x63, - 0x86, 0xdb, 0x62, 0x70, 0xda, 0x2d, 0x63, 0x61, 0xfd, 0x4f, 0x5c, 0xbc, - 0x16, 0xee, 0x35, 0x05, 0x64, 0x8f, 0x85, 0xf2, 0xa7, 0x61, 0x5a, 0x59, - 0x05, 0x8a, 0x3d, 0x04, 0x81, 0xdd, 0x90, 0xda, 0xc2, 0x74, 0xd3, 0xd2, - 0xcd, 0x11, 0x94, 0xed, 0xfa, 0xdd, 0xc6, 0xc6, 0xf0, 0xfc, 0xf8, 0xf8, - 0x28, 0x3a, 0x3d, 0x79, 0x73, 0x72, 0x19, 0x08, 0xe4, 0xee, 0x22, 0x31, - 0x83, 0x6b, 0x61, 0xb5, 0x5b, 0xaa, 0xcb, 0xe1, 0x51, 0x07, 0xa5, 0x3f, - 0xbb, 0xca, 0x67, 0x89, 0xa6, 0x31, 0x4c, 0xeb, 0xef, 0x41, 0xf5, 0x06, - 0x50, 0x05, 0xea, 0x6b, 0x78, 0x81, 0xae, 0x20, 0xe1, 0x66, 0xec, 0xaa, - 0xfc, 0xf4, 0x7f, 0xd0, 0x00, 0x8d, 0xaa, 0xe4, 0xa4, 0xe0, 0x69, 0xae, - 0x88, 0x93, 0x06, 0xb5, 0xd6, 0x46, 0xc5, 0x6b, 0x9b, 0x4c, 0xb5, 0x90, - 0xa8, 0xb3, 0xd0, 0x21, 0x5e, 0xef, 0x3e, 0x41, 0x42, 0xec, 0x2c, 0x15, - 0x08, 0xe7, 0x30, 0x98, 0xd8, 0x55, 0x4d, 0xb9, 0xcc, 0x84, 0x8f, 0x87, - 0x3d, 0x86, 0x05, 0xad, 0x2c, 0x92, 0xd6, 0xfa, 0x0a, 0x4b, 0x25, 0x3d, - 0xd9, 0x71, 0xf9, 0x02, 0x0b, 0xf0, 0x1c, 0x15, 0xf5, 0xb9, 0xb3, 0xdd, - 0x88, 0xe4, 0x91, 0x25, 0x4b, 0xf5, 0xf9, 0x72, 0xde, 0xb8, 0xee, 0x7e, - 0x90, 0x77, 0x69, 0xfe, 0xcf, 0x77, 0x70, 0xbd, 0x5d, 0xc5, 0x79, 0x9f, - 0x24, 0xaf, 0x55, 0xdf, 0x8c, 0xab, 0x42, 0x11, 0x1a, 0x68, 0x2c, 0xa6, - 0x9f, 0xc4, 0xd7, 0xf8, 0xa8, 0x49, 0x8b, 0x3e, 0xe9, 0x23, 0x83, 0x4b, - 0x72, 0xaa, 0x07, 0x80, 0xa7, 0xde, 0x8b, 0x50, 0xa1, 0xda, 0x85, 0x3e, - 0x8b, 0xac, 0xe3, 0x81, 0xf5, 0x6c, 0x17, 0x3d, 0x8f, 0x42, 0xd5, 0xd3, - 0x4c, 0x9d, 0x43, 0x29, 0x4f, 0x53, 0xe7, 0xd2, 0x14, 0xad, 0x67, 0xd1, - 0xee, 0x67, 0x3c, 0x8f, 0x8f, 0x9b, 0x0f, 0xd7, 0xb2, 0xb0, 0x28, 0x36, - 0x51, 0x17, 0x32, 0xbf, 0x9b, 0x92, 0x97, 0x00, 0xb4, 0x72, 0x59, 0x5d, - 0x8b, 0x86, 0x45, 0xb4, 0x1e, 0xeb, 0x27, 0xea, 0x4a, 0x87, 0x65, 0x0a, - 0xbe, 0x6d, 0x91, 0x90, 0x50, 0xb5, 0x51, 0xd6, 0x85, 0x6d, 0xad, 0x12, - 0xad, 0xd7, 0xcd, 0x7d, 0xc6, 0x1c, 0x96, 0x81, 0xad, 0x23, 0x44, 0x6b, - 0xf7, 0xe9, 0x04, 0x52, 0xb5, 0x19, 0x01, 0x40, 0x7f, 0x42, 0x7c, 0x12, - 0x24, 0x0d, 0xd7, 0x25, 0x7c, 0x9e, 0x6e, 0x64, 0x2a, 0xc0, 0xf0, 0xb2, - 0x66, 0x30, 0x2e, 0x6c, 0x42, 0x7e, 0xe0, 0x32, 0x2c, 0x55, 0xd7, 0x00, - 0xb3, 0xe6, 0x8e, 0xef, 0x85, 0x03, 0xf7, 0xcb, 0x72, 0x6a, 0x76, 0x05, - 0x5f, 0x67, 0xa1, 0x3a, 0x67, 0x4e, 0xe6, 0x0f, 0xa6, 0xbd, 0xbb, 0x43, - 0xf2, 0xeb, 0x34, 0xab, 0x17, 0x64, 0x6b, 0x2a, 0xa5, 0x98, 0x56, 0x1f, - 0xab, 0xb3, 0xbb, 0xf3, 0xcd, 0xfa, 0x55, 0x07, 0x48, 0xeb, 0xa3, 0x2f, - 0xef, 0x3d, 0x7d, 0x64, 0xd3, 0xce, 0x72, 0x57, 0x61, 0xc7, 0x03, 0x8d, - 0x78, 0x07, 0x4c, 0x63, 0xdb, 0x88, 0xf0, 0x93, 0xeb, 0x18, 0x25, 0xd8, - 0x1f, 0x19, 0xbd, 0x25, 0x68, 0xd4, 0x86, 0xf2, 0x46, 0xc3, 0xb1, 0xe5, - 0xcb, 0x82, 0x2d, 0x64, 0x0b, 0xc0, 0x0d, 0x79, 0x35, 0xd6, 0xa5, 0x74, - 0x4a, 0x8e, 0x77, 0xf0, 0xb6, 0x70, 0xce, 0x5e, 0x95, 0x49, 0x18, 0xf5, - 0xe4, 0xc9, 0xf5, 0x52, 0x92, 0xa8, 0x33, 0x51, 0xfb, 0x19, 0x8f, 0x51, - 0xcf, 0x2b, 0xf1, 0x66, 0x8e, 0x1c, 0x12, 0x7a, 0x02, 0xe3, 0x1d, 0xc7, - 0x26, 0xb2, 0x8a, 0xc8, 0x51, 0xbf, 0x18, 0xd8, 0x3e, 0x3b, 0x66, 0x67, - 0x18, 0xb8, 0x81, 0x1c, 0xaf, 0xb0, 0xd4, 0x93, 0x54, 0x41, 0x1a, 0x20, - 0x43, 0x51, 0x08, 0xc5, 0x31, 0x7b, 0xce, 0xeb, 0x62, 0xa7, 0x58, 0x29, - 0x1e, 0x02, 0x34, 0xd0, 0x53, 0xaa, 0x45, 0x4b, 0xae, 0x2b, 0xe6, 0xf8, - 0x85, 0xa5, 0xa0, 0x0a, 0x4c, 0x2c, 0xdb, 0xfd, 0x0f, 0xcf, 0xde, 0xbe, - 0x3e, 0xf9, 0xca, 0x01, 0x5b, 0x08, 0x13, 0x5f, 0x96, 0x19, 0xdb, 0x35, - 0xc5, 0x68, 0xe8, 0x8a, 0x70, 0x39, 0x87, 0xb7, 0x56, 0xda, 0xd0, 0xb0, - 0x5b, 0x62, 0x4f, 0xef, 0xc3, 0x0f, 0xc0, 0x40, 0xe6, 0x4f, 0xd8, 0x56, - 0x2e, 0xd9, 0xe3, 0xc5, 0x96, 0xb7, 0x3c, 0xd4, 0xa0, 0x77, 0x24, 0x3d, - 0x23, 0xce, 0xcb, 0xe5, 0xc2, 0x45, 0x0f, 0x06, 0x95, 0x3a, 0x14, 0x40, - 0x92, 0x6f, 0x05, 0xae, 0x18, 0xbd, 0x5c, 0x08, 0x6b, 0x92, 0xa8, 0xc7, - 0xaa, 0x61, 0x57, 0xee, 0x00, 0xb6, 0x2c, 0x68, 0xba, 0xbd, 0x5e, 0x00, - 0x8d, 0x90, 0x9c, 0x29, 0xe3, 0x61, 0x85, 0x81, 0xf2, 0xe6, 0xca, 0xe1, - 0x32, 0x5d, 0x32, 0x51, 0x2b, 0xb2, 0x34, 0x13, 0xcd, 0x8c, 0xe7, 0x2d, - 0xb5, 0x5b, 0x7f, 0x70, 0x55, 0x6c, 0x35, 0xec, 0xd7, 0xbb, 0x8a, 0x0a, - 0x57, 0x92, 0xd4, 0x85, 0x26, 0xc9, 0x60, 0x11, 0x42, 0x58, 0xf4, 0xc4, - 0xe5, 0x89, 0x4f, 0x5e, 0xb1, 0x87, 0x66, 0x7f, 0x80, 0x42, 0x97, 0x88, - 0xdf, 0x09, 0x6b, 0x50, 0x29, 0x97, 0xf4, 0x60, 0xa7, 0x27, 0x57, 0x41, - 0x4a, 0x99, 0x84, 0x08, 0x1a, 0xd1, 0x89, 0xb9, 0x98, 0x6d, 0x2d, 0xdd, - 0x4f, 0xba, 0xfd, 0x62, 0x35, 0x1b, 0x65, 0x53, 0xcb, 0xb8, 0x70, 0x49, - 0xd5, 0xf6, 0x50, 0x49, 0xd3, 0x40, 0xcc, 0xa0, 0x14, 0x1d, 0x44, 0xd7, - 0x81, 0x85, 0xd2, 0x87, 0x49, 0xf9, 0xf1, 0x0b, 0xba, 0x3e, 0x3c, 0x45, - 0x36, 0x0b, 0x97, 0xe1, 0x9f, 0xcc, 0xc7, 0xd3, 0x4c, 0xa9, 0x9a, 0x13, - 0x63, 0xb1, 0x52, 0xd5, 0xa9, 0xb3, 0xef, 0x2f, 0x5b, 0xb2, 0xb1, 0x03, - 0xc8, 0xd9, 0x24, 0xee, 0xb0, 0x71, 0xf8, 0x3b, 0x9b, 0x20, 0xbf, 0x2d, - 0x5f, 0x68, 0x38, 0xbe, 0x41, 0x23, 0x50, 0x43, 0x02, 0xb5, 0x4d, 0x43, - 0xfd, 0x8b, 0xd8, 0x16, 0xc5, 0x03, 0xf8, 0x83, 0x75, 0x6e, 0x8f, 0xd6, - 0x96, 0x9e, 0xe8, 0x29, 0xce, 0xaf, 0x15, 0x73, 0x48, 0x9d, 0x6a, 0x50, - 0x12, 0x1d, 0x00, 0xba, 0xb3, 0x51, 0xb2, 0x50, 0xe2, 0xc2, 0x65, 0x20, - 0x3e, 0x2d, 0x25, 0xa9, 0x4f, 0xd3, 0x9f, 0xc4, 0x3a, 0xe9, 0x08, 0x31, - 0xe0, 0x38, 0x9f, 0xb8, 0x90, 0x94, 0xd8, 0xdf, 0x65, 0x86, 0xcc, 0xec, - 0x4d, 0xb5, 0x7a, 0x99, 0x05, 0xaf, 0xb1, 0x3d, 0x0f, 0x9a, 0x70, 0xa2, - 0x36, 0x14, 0xe9, 0x0a, 0xb2, 0x04, 0x03, 0x6e, 0x21, 0xeb, 0x27, 0x29, - 0x7c, 0x13, 0xf2, 0xfd, 0x2b, 0x4d, 0x31, 0xa7, 0xf3, 0xac, 0xa0, 0x01, - 0x0a, 0x86, 0xf4, 0xd9, 0x8e, 0x5a, 0xe2, 0x4a, 0x8d, 0x53, 0x2d, 0xa2, - 0x83, 0x8b, 0x63, 0x92, 0x6c, 0xaf, 0xe7, 0x48, 0x0a, 0xe7, 0x11, 0x96, - 0xba, 0x3f, 0x10, 0xac, 0x79, 0x15, 0xf4, 0x7c, 0x70, 0x87, 0xf7, 0xc1, - 0x9b, 0x4c, 0x4c, 0x1a, 0x1f, 0x40, 0x87, 0xcc, 0x05, 0xa0, 0x31, 0xc9, - 0x8d, 0x0d, 0xac, 0x0f, 0x5c, 0x87, 0xb3, 0xbb, 0x85, 0xa4, 0xd8, 0x5b, - 0x42, 0x5d, 0x65, 0x06, 0xd4, 0x77, 0xde, 0x60, 0xeb, 0x21, 0x42, 0x9f, - 0xad, 0x35, 0x4e, 0xb5, 0xcf, 0x41, 0xf8, 0x9b, 0xe1, 0x8c, 0x69, 0x5f, - 0x15, 0x0f, 0xa8, 0x27, 0xa7, 0x5e, 0xbb, 0xf5, 0xe8, 0x6f, 0xb8, 0x67, - 0x58, 0x16, 0xa9, 0xcb, 0x05, 0x89, 0x0b, 0xad, 0x17, 0x43, 0xf6, 0x24, - 0x10, 0x7e, 0x25, 0x1f, 0x8f, 0x83, 0xab, 0xc5, 0x46, 0xcd, 0xc2, 0x4f, - 0x5c, 0x24, 0x56, 0x51, 0x09, 0xea, 0xc0, 0x44, 0xcf, 0x2a, 0x53, 0x05, - 0xc7, 0x09, 0x8f, 0x18, 0x68, 0xe3, 0x56, 0x04, 0x80, 0x90, 0x3f, 0xb5, - 0x9a, 0x79, 0x3f, 0x71, 0xb3, 0xf5, 0x63, 0x70, 0x5f, 0xf2, 0x47, 0xaf, - 0x1c, 0xee, 0x10, 0x8f, 0x62, 0xc0, 0x1d, 0x81, 0xa5, 0xc2, 0x7d, 0xca, - 0xbf, 0xe0, 0x63, 0x04, 0xbc, 0x19, 0x7a, 0x5b, 0x05, 0x3b, 0x44, 0x21, - 0xdf, 0xc3, 0x81, 0x88, 0x8f, 0x0f, 0x1c, 0x7a, 0x14, 0x8a, 0xc6, 0x41, - 0x95, 0x23, 0x36, 0xe5, 0x70, 0x06, 0xaf, 0x1d, 0xf8, 0x22, 0xa9, 0x54, - 0x45, 0x72, 0x29, 0x42, 0x9d, 0x7e, 0x87, 0xd6, 0xa2, 0x3b, 0x9d, 0x7a, - 0x86, 0x6f, 0x8f, 0xf1, 0xae, 0x22, 0x9b, 0xce, 0x0b, 0x4c, 0xca, 0xbb, - 0x18, 0x4f, 0x7a, 0x55, 0xc9, 0x6d, 0xe0, 0x7a, 0x1c, 0x9c, 0xfa, 0xe3, - 0xb0, 0x5f, 0x90, 0x1f, 0x82, 0x70, 0x81, 0xbb, 0xb4, 0x30, 0x3f, 0x24, - 0xd1, 0xf6, 0x58, 0x63, 0x23, 0x24, 0x91, 0x3a, 0x29, 0xc7, 0xc1, 0x52, - 0x26, 0xe3, 0x9b, 0x4c, 0xc2, 0x69, 0x69, 0xd1, 0x82, 0xb4, 0xcb, 0x4e, - 0xf4, 0x5f, 0x4a, 0x03, 0xdf, 0xf8, 0x6c, 0x3d, 0x26, 0x84, 0x81, 0xa0, - 0x6a, 0x0d, 0x3c, 0x41, 0x1c, 0x7f, 0x7f, 0x79, 0x71, 0x10, 0x7d, 0x7d, - 0x7c, 0x70, 0x74, 0x7c, 0x31, 0xac, 0x5d, 0xfa, 0x1a, 0x05, 0x22, 0x12, - 0x1a, 0xdb, 0x83, 0x21, 0x1a, 0x5b, 0xce, 0xbf, 0x06, 0xec, 0x1b, 0xd7, - 0x8b, 0x57, 0x38, 0x48, 0x74, 0x3e, 0x58, 0x21, 0x12, 0xc7, 0x01, 0x47, - 0xa5, 0x71, 0xe4, 0x73, 0x16, 0xb4, 0xa1, 0xa5, 0x7f, 0x9d, 0xf5, 0x3c, - 0x4c, 0x95, 0xf1, 0x70, 0x4e, 0xfe, 0x32, 0x99, 0x64, 0x96, 0x05, 0x58, - 0xdd, 0xb9, 0xaf, 0x7d, 0xc2, 0x75, 0xc0, 0xb6, 0xf4, 0x92, 0x51, 0x03, - 0x62, 0xe7, 0xfb, 0x3e, 0xf5, 0xdb, 0xa7, 0xc5, 0xef, 0x33, 0xe2, 0xd6, - 0x2a, 0x29, 0x3a, 0x35, 0x6b, 0x60, 0xb5, 0xfb, 0x0d, 0x29, 0x70, 0xd9, - 0x38, 0x49, 0x5f, 0xb7, 0xb6, 0xc4, 0xa7, 0x6b, 0xca, 0x95, 0x01, 0xea, - 0x1a, 0x04, 0x2e, 0xd5, 0x40, 0x48, 0xd6, 0x13, 0xd4, 0xc8, 0x6b, 0xd1, - 0x38, 0x25, 0xaf, 0x66, 0x6a, 0x58, 0x18, 0x06, 0xa2, 0x53, 0x80, 0xac, - 0x93, 0x96, 0x7a, 0xa9, 0xc3, 0x2e, 0x62, 0x70, 0x90, 0x34, 0x2c, 0x7d, - 0x28, 0xbc, 0x1f, 0xe0, 0x0b, 0xd1, 0x00, 0xfd, 0xa2, 0xe2, 0x2a, 0x55, - 0xbb, 0xa8, 0x16, 0xa7, 0xd1, 0xe6, 0x78, 0x0c, 0x8e, 0xe6, 0x2d, 0xae, - 0x9f, 0xbb, 0x34, 0x60, 0x6c, 0x7d, 0x57, 0x82, 0xc1, 0x58, 0xa9, 0x87, - 0xa9, 0x93, 0xc3, 0xcd, 0x64, 0xe3, 0x4d, 0x5e, 0x0d, 0x92, 0x80, 0x42, - 0x62, 0x46, 0x11, 0x0f, 0x04, 0x8e, 0xbb, 0xe7, 0x92, 0xe8, 0xeb, 0xac, - 0xc0, 0x5d, 0xd0, 0x7c, 0x9c, 0x2f, 0xf9, 0xb6, 0xe5, 0xc7, 0x1b, 0xea, - 0xea, 0x72, 0x90, 0x77, 0xc0, 0x88, 0x04, 0xfb, 0x3a, 0x3f, 0xb8, 0xfc, - 0x1a, 0x8e, 0x56, 0x90, 0xf0, 0x11, 0x90, 0x1e, 0xcc, 0xbd, 0xd6, 0xcc, - 0xc5, 0x72, 0x0a, 0x9c, 0xc8, 0xbf, 0x86, 0xdd, 0x65, 0xf2, 0x24, 0x1c, - 0x79, 0x30, 0x51, 0x02, 0x0a, 0x28, 0x55, 0xc3, 0x63, 0xb5, 0xb4, 0x0c, - 0xa2, 0xde, 0x5d, 0xa2, 0x9d, 0x0b, 0xbb, 0xec, 0x4a, 0x26, 0x7a, 0x57, - 0xe6, 0x04, 0xa2, 0x67, 0x61, 0x8e, 0x35, 0x9e, 0x10, 0x49, 0x11, 0x5f, - 0x5c, 0x69, 0x8a, 0x6d, 0x8f, 0xf6, 0xb4, 0x1d, 0x1a, 0x2b, 0x38, 0xd2, - 0x5f, 0xcc, 0x56, 0x83, 0x26, 0x6e, 0x48, 0xf4, 0xe5, 0xb2, 0xac, 0xb2, - 0x95, 0x1a, 0x9e, 0xa3, 0x93, 0x2c, 0xf3, 0x2c, 0x2b, 0xab, 0x88, 0x88, - 0x58, 0x1d, 0x39, 0xd1, 0x82, 0x81, 0x26, 0x63, 0xe1, 0xa6, 0xe6, 0x2a, - 0x77, 0x87, 0x82, 0x61, 0x3c, 0x2a, 0xb2, 0xe9, 0xb2, 0x0c, 0x02, 0xaf, - 0x7f, 0xd9, 0x98, 0x83, 0x41, 0x6f, 0x9e, 0x0c, 0x12, 0x23, 0x28, 0x8e, - 0x1c, 0xce, 0x63, 0xd2, 0xf4, 0xb9, 0x0a, 0x2c, 0xfb, 0x1d, 0xf3, 0x6c, - 0x5e, 0xad, 0x7e, 0x82, 0x18, 0xef, 0xad, 0x8d, 0x8d, 0xa1, 0x6d, 0x36, - 0x83, 0xef, 0x35, 0x37, 0x1d, 0x38, 0x11, 0x40, 0xf8, 0x13, 0xbf, 0xc1, - 0x98, 0x7e, 0x31, 0x3c, 0xa4, 0x44, 0xf6, 0x14, 0x2c, 0x5c, 0xf6, 0x38, - 0x2d, 0xaa, 0x93, 0xc2, 0x57, 0xce, 0x73, 0x61, 0x89, 0x65, 0x97, 0x99, - 0x01, 0xe5, 0xaa, 0xe7, 0xce, 0x13, 0x44, 0x25, 0x35, 0xbd, 0x15, 0x31, - 0x93, 0x2f, 0x01, 0x05, 0xe7, 0xf2, 0x51, 0xb9, 0x3c, 0xc8, 0xed, 0xff, - 0xde, 0x8e, 0x7a, 0x02, 0x73, 0xd3, 0x02, 0x36, 0xb2, 0x8c, 0xfe, 0x1f, - 0x84, 0x60, 0x29, 0x58, 0x21, 0xb7, 0x59, 0x43, 0xf8, 0x1b, 0x90, 0x0a, - 0x75, 0x93, 0x8f, 0x3d, 0xf5, 0x93, 0x74, 0x90, 0xdc, 0xb3, 0xfe, 0x62, - 0x3a, 0x02, 0x7f, 0x61, 0x59, 0xa6, 0x1e, 0x38, 0x06, 0x78, 0x17, 0x57, - 0xce, 0xaa, 0xc7, 0x85, 0xa3, 0xa4, 0x8c, 0x92, 0x88, 0xf5, 0xa8, 0x22, - 0x60, 0x1e, 0xd4, 0x8d, 0xa8, 0xa2, 0xb7, 0x17, 0x51, 0x91, 0xc9, 0x4f, - 0xcb, 0x36, 0xd2, 0x18, 0x2f, 0x25, 0x7f, 0x55, 0xa3, 0xb4, 0x62, 0x8b, - 0x96, 0x31, 0xb3, 0xb8, 0x53, 0x09, 0xab, 0x33, 0xc7, 0xa4, 0x8d, 0xd1, - 0x84, 0x00, 0xf6, 0x5b, 0x02, 0xf8, 0x0c, 0x97, 0x4d, 0xe1, 0x0b, 0xa3, - 0x22, 0x59, 0x9b, 0xab, 0x0e, 0x99, 0x22, 0x63, 0x37, 0xaa, 0x25, 0x70, - 0xb8, 0x8d, 0xf2, 0xa3, 0xd7, 0xab, 0x1f, 0x09, 0xf1, 0xf0, 0xd1, 0xdd, - 0xc7, 0x69, 0x19, 0x4a, 0x04, 0x36, 0x23, 0xd2, 0xf0, 0x14, 0xae, 0x7e, - 0xb4, 0xaa, 0x84, 0xa6, 0xf8, 0xb8, 0xcd, 0x6b, 0xce, 0xef, 0x50, 0x8b, - 0x94, 0x62, 0x89, 0xc0, 0xfc, 0x75, 0x93, 0x6a, 0x74, 0xa9, 0x2c, 0xba, - 0x99, 0x03, 0xd9, 0x9e, 0x01, 0xf3, 0x1e, 0x87, 0x16, 0x78, 0xef, 0xaa, - 0x0b, 0x80, 0x18, 0x34, 0x4f, 0xcb, 0xc0, 0xa1, 0xee, 0xe9, 0x0d, 0x72, - 0x12, 0x66, 0x92, 0x63, 0x55, 0x5c, 0xb8, 0xf3, 0x47, 0x75, 0x1d, 0xf6, - 0xc7, 0x51, 0xac, 0xf3, 0xc8, 0xaf, 0x47, 0x21, 0x57, 0xc9, 0xde, 0x2e, - 0x54, 0x52, 0x09, 0xdc, 0x00, 0x88, 0x9d, 0x95, 0xb3, 0xaa, 0x54, 0x1f, - 0x09, 0xd6, 0x1d, 0xf5, 0x32, 0x81, 0x91, 0x68, 0x49, 0xf6, 0xea, 0x67, - 0x16, 0x89, 0x30, 0xf0, 0x38, 0x55, 0xca, 0x9e, 0x48, 0xe2, 0x76, 0x51, - 0xe6, 0xcb, 0x71, 0x05, 0xb0, 0x0a, 0xc4, 0x50, 0xf1, 0xcf, 0xbb, 0xe5, - 0xcd, 0x42, 0xad, 0x7e, 0x33, 0xae, 0xa4, 0xb1, 0xe8, 0x93, 0x61, 0x17, - 0x5b, 0x52, 0x06, 0x54, 0x8b, 0x20, 0x43, 0x3b, 0xa1, 0xf1, 0x3b, 0x02, - 0xeb, 0x9f, 0xbb, 0x24, 0xfa, 0x0a, 0xee, 0x97, 0xa4, 0x24, 0x04, 0xb7, - 0xae, 0x8a, 0x60, 0x10, 0x39, 0xf2, 0x48, 0x11, 0xc8, 0x20, 0xd0, 0xb0, - 0xb1, 0x72, 0xc3, 0xa1, 0x84, 0x51, 0x77, 0x7d, 0x5f, 0xf7, 0x93, 0xfa, - 0xdb, 0xa6, 0x85, 0x34, 0xe0, 0x7d, 0x57, 0xd6, 0xa1, 0xf0, 0x48, 0x63, - 0xb5, 0x58, 0xd5, 0x64, 0x4a, 0x53, 0x76, 0x92, 0xa1, 0x9c, 0xc4, 0x99, - 0xae, 0xdf, 0xc0, 0x55, 0xe2, 0xb4, 0x72, 0xa7, 0x35, 0x41, 0xa2, 0x79, - 0x2b, 0x9e, 0x0b, 0x0a, 0x49, 0x83, 0x88, 0x8e, 0xcc, 0x9a, 0x0a, 0x66, - 0x83, 0x05, 0x63, 0x9d, 0xc6, 0x36, 0xe9, 0xe4, 0xdc, 0x75, 0x41, 0x43, - 0xe0, 0x19, 0x77, 0xa7, 0xc9, 0x4e, 0x37, 0xa8, 0x4b, 0xb1, 0x29, 0x51, - 0xff, 0x19, 0xf4, 0x1e, 0xb6, 0x1c, 0x62, 0x82, 0x62, 0xb7, 0xe0, 0x08, - 0xb7, 0xad, 0x96, 0xa1, 0x50, 0x13, 0xbf, 0x74, 0x30, 0xbb, 0x2f, 0xf6, - 0x06, 0xbb, 0xcf, 0x3f, 0x1b, 0xec, 0x0c, 0x76, 0x77, 0x98, 0xb3, 0xf0, - 0x50, 0x82, 0xc1, 0xc9, 0xba, 0xb4, 0x74, 0x55, 0x79, 0xaf, 0xd9, 0xe7, - 0xdb, 0xe3, 0xcb, 0xef, 0xce, 0x2e, 0xbe, 0x89, 0x4e, 0xde, 0x5e, 0x1e, - 0x5f, 0xbc, 0x3e, 0x38, 0xfc, 0x58, 0xe8, 0xe1, 0xd0, 0x60, 0x1d, 0x14, - 0x22, 0x4c, 0xfc, 0xc2, 0x34, 0xad, 0x82, 0x7e, 0xcd, 0x92, 0xf2, 0x66, - 0x67, 0x7f, 0xf7, 0x51, 0xbc, 0xd2, 0x16, 0xc3, 0xa0, 0x7f, 0xdf, 0x26, - 0xb5, 0xcb, 0x93, 0x5a, 0xdf, 0x8a, 0x43, 0x41, 0x1b, 0x4a, 0x80, 0x95, - 0x0b, 0xce, 0x05, 0x83, 0x47, 0x51, 0x82, 0x74, 0x94, 0xc7, 0x66, 0x92, - 0x1a, 0x09, 0x68, 0xa2, 0x64, 0xd4, 0x2a, 0xbe, 0x8b, 0x06, 0xa1, 0x2b, - 0xbb, 0xe5, 0x18, 0xe5, 0x65, 0x3a, 0x2d, 0xd5, 0x90, 0x22, 0x18, 0x88, - 0x13, 0x08, 0x77, 0xc6, 0x90, 0xad, 0x30, 0x2f, 0xea, 0xf2, 0xa2, 0x30, - 0x97, 0x14, 0xe6, 0x9d, 0xb8, 0x44, 0x11, 0x07, 0x3c, 0x50, 0x49, 0xb7, - 0xc1, 0x58, 0xab, 0x75, 0x1b, 0xc3, 0x18, 0xda, 0x1a, 0x00, 0x61, 0x61, - 0xb1, 0xcd, 0x98, 0x58, 0xc5, 0x28, 0x7a, 0xa8, 0x03, 0xc1, 0x69, 0x08, - 0x46, 0x23, 0x5d, 0x41, 0x94, 0x32, 0xd0, 0xdb, 0x2a, 0x7c, 0xa6, 0xdc, - 0x4e, 0x48, 0x9e, 0x10, 0xc9, 0xcf, 0xf0, 0xb9, 0xb9, 0xf5, 0xa2, 0x02, - 0xab, 0x16, 0x49, 0xa1, 0x88, 0xf0, 0x75, 0x11, 0xb2, 0x11, 0xa2, 0x39, - 0xc9, 0xe3, 0x7b, 0xae, 0x3f, 0x23, 0x62, 0x83, 0x0f, 0x66, 0x0c, 0x8a, - 0x5d, 0xb0, 0xc8, 0xe4, 0xd7, 0x3c, 0x3a, 0x3f, 0x7e, 0xd3, 0xb7, 0x3a, - 0x78, 0xf4, 0xbb, 0x98, 0xa1, 0x0c, 0x76, 0x53, 0x92, 0x7b, 0x16, 0xc9, - 0xdc, 0x02, 0x6a, 0xc0, 0x13, 0x35, 0x02, 0x28, 0x9c, 0x00, 0x1f, 0x1a, - 0xb1, 0x48, 0x08, 0xaf, 0x55, 0xfc, 0x32, 0xbb, 0xb4, 0x5a, 0x10, 0xf0, - 0x78, 0x3f, 0x35, 0x6a, 0x39, 0xda, 0x74, 0x91, 0xba, 0xdc, 0x1f, 0xc2, - 0x51, 0x11, 0x2d, 0xe0, 0x02, 0x04, 0x32, 0x4b, 0xb6, 0x3e, 0xff, 0xe6, - 0x70, 0xf8, 0xc9, 0xee, 0x9e, 0x0e, 0x67, 0x6b, 0xe0, 0xe1, 0x2c, 0x1b, - 0x79, 0xf8, 0x60, 0xd7, 0xe1, 0x18, 0x2d, 0xab, 0x1a, 0x07, 0x1c, 0x9b, - 0xb1, 0xe9, 0x32, 0x83, 0xb6, 0x2a, 0xa9, 0x41, 0x1b, 0x52, 0x7d, 0xd4, - 0x84, 0x4b, 0x57, 0xa7, 0x8e, 0x9d, 0x21, 0xa8, 0xb6, 0xa0, 0xf5, 0x0e, - 0x4a, 0x17, 0xef, 0x17, 0xcf, 0xed, 0x23, 0x69, 0x59, 0x5b, 0x43, 0xda, - 0xb8, 0x8f, 0x69, 0xa9, 0xef, 0x39, 0xaf, 0xb7, 0xff, 0x96, 0x51, 0x13, - 0xf5, 0x52, 0x37, 0x5c, 0x1e, 0xdf, 0x0d, 0x0e, 0x80, 0x86, 0xb0, 0x4f, - 0xac, 0xa2, 0xca, 0xdc, 0x03, 0xba, 0xf3, 0xd3, 0x67, 0xb4, 0x51, 0x74, - 0xb2, 0x04, 0xaa, 0x81, 0x99, 0x42, 0x36, 0x65, 0xa5, 0xc5, 0x3d, 0x72, - 0x94, 0x33, 0x70, 0xfe, 0x42, 0x82, 0x49, 0xdf, 0x0e, 0xa2, 0xaf, 0x93, - 0x79, 0xa1, 0xd5, 0x8a, 0x2d, 0xf9, 0x0a, 0xc1, 0x81, 0x5c, 0x34, 0x09, - 0x25, 0x6e, 0x4e, 0x93, 0x58, 0x41, 0x04, 0x89, 0xd7, 0x15, 0xa2, 0xdb, - 0x5a, 0x79, 0x87, 0x98, 0x43, 0xf4, 0x70, 0x13, 0xa9, 0x81, 0x16, 0x35, - 0x0e, 0xd3, 0x42, 0x1b, 0xd8, 0xac, 0x42, 0x01, 0x02, 0x9a, 0x1a, 0xcd, - 0xe9, 0x31, 0x87, 0x97, 0x49, 0xed, 0xc9, 0x37, 0xc0, 0x5a, 0x65, 0x3b, - 0xa1, 0xe8, 0x5a, 0x9e, 0xa9, 0x4c, 0xf2, 0x1b, 0x36, 0x7a, 0x14, 0x74, - 0xdd, 0xc4, 0xf3, 0xf1, 0x6a, 0x30, 0x21, 0x29, 0x96, 0xcd, 0x66, 0x83, - 0xe5, 0xed, 0x76, 0x70, 0x4c, 0x99, 0xe5, 0xdf, 0x08, 0x2c, 0x40, 0xd5, - 0xe4, 0x6d, 0xf5, 0xf9, 0x9a, 0xa8, 0x5d, 0x71, 0xe5, 0x4c, 0x30, 0x49, - 0x58, 0x82, 0xbf, 0x1c, 0xcf, 0xb5, 0xf8, 0x56, 0xc7, 0x91, 0x83, 0xf9, - 0xe4, 0x16, 0x06, 0x8b, 0x64, 0xb6, 0xef, 0x52, 0x90, 0x8d, 0x3f, 0x28, - 0x3a, 0xb8, 0x53, 0x29, 0x02, 0xf3, 0xec, 0x3c, 0xb9, 0x9e, 0xaa, 0x40, - 0x11, 0x2a, 0x2d, 0x1e, 0xb6, 0xb5, 0x99, 0x06, 0x22, 0xaa, 0x0e, 0x3c, - 0x10, 0x28, 0xbe, 0x44, 0x9c, 0x6a, 0x86, 0xaa, 0x28, 0xc6, 0xf8, 0xb5, - 0x24, 0xac, 0x6f, 0x44, 0xc1, 0x42, 0x80, 0x38, 0xca, 0x62, 0xb0, 0x1a, - 0x77, 0x2c, 0x1c, 0x49, 0x1d, 0x4f, 0xf4, 0xad, 0x50, 0x08, 0x30, 0x7e, - 0x35, 0x34, 0x1a, 0x6e, 0x4f, 0x2b, 0x82, 0x27, 0x67, 0x85, 0xbe, 0xbe, - 0x7b, 0xc2, 0xb6, 0xee, 0xcb, 0xd3, 0x61, 0x4f, 0xe8, 0x61, 0x9e, 0xdc, - 0x07, 0x94, 0x25, 0xb0, 0xd4, 0x4a, 0x7e, 0x6c, 0xf9, 0x91, 0xf0, 0x35, - 0x2b, 0xc0, 0x9b, 0xcb, 0x68, 0x84, 0x33, 0x78, 0x27, 0x99, 0xcf, 0x82, - 0xb0, 0x85, 0xd0, 0x78, 0x62, 0x1e, 0x8e, 0x55, 0x13, 0x11, 0x81, 0xc8, - 0x01, 0xbc, 0x30, 0x74, 0x1e, 0x09, 0x4c, 0x4f, 0x7a, 0x51, 0x7f, 0x0f, - 0xb0, 0x39, 0xbb, 0xd5, 0x85, 0x8c, 0xb9, 0xc8, 0x47, 0x3c, 0x46, 0x51, - 0xa3, 0x0d, 0x57, 0x6c, 0xdd, 0x58, 0xc2, 0xa6, 0x92, 0xf5, 0x1d, 0xbd, - 0xcf, 0x3f, 0xf6, 0x74, 0x52, 0x77, 0xbb, 0x08, 0xdd, 0x66, 0x79, 0xf4, - 0x2e, 0x99, 0xae, 0x9a, 0x62, 0xc3, 0xde, 0xa3, 0x3b, 0x8b, 0x24, 0x89, - 0xfb, 0xd4, 0x41, 0xaa, 0x0a, 0xaa, 0x36, 0x0c, 0xa1, 0x0a, 0x64, 0x68, - 0x03, 0xa0, 0x65, 0x54, 0x13, 0xf7, 0x3c, 0xba, 0xdb, 0x33, 0x4f, 0x33, - 0x7f, 0x63, 0x8b, 0x27, 0xa6, 0x7a, 0xcf, 0x48, 0x1a, 0xb9, 0x8b, 0x1c, - 0xee, 0x16, 0x50, 0x2e, 0xa7, 0x3e, 0x11, 0xdd, 0x12, 0x27, 0xa9, 0x70, - 0x1a, 0xd6, 0xa0, 0x4a, 0x87, 0x3e, 0xc4, 0xdb, 0x0f, 0xc4, 0x57, 0x92, - 0x85, 0x7d, 0x90, 0x13, 0x42, 0xc0, 0x71, 0xa6, 0x49, 0x82, 0x2d, 0x96, - 0x33, 0xad, 0xce, 0x04, 0x46, 0xdc, 0xc3, 0x75, 0x5b, 0x46, 0xc4, 0x89, - 0x53, 0x09, 0xf9, 0x9b, 0x42, 0x98, 0x86, 0x80, 0xa5, 0xc6, 0x52, 0xbf, - 0x50, 0x6c, 0x01, 0x13, 0x38, 0x3d, 0xd0, 0xcb, 0x4d, 0x2a, 0x36, 0x0c, - 0x44, 0xa8, 0x62, 0xc1, 0x88, 0x55, 0x74, 0x23, 0x3a, 0x7d, 0x4b, 0x6e, - 0xb4, 0xcc, 0x10, 0x02, 0xeb, 0x04, 0x06, 0x69, 0x63, 0x08, 0xa1, 0x33, - 0xea, 0x86, 0x3c, 0xb2, 0xff, 0x39, 0xaf, 0x41, 0xd1, 0xf5, 0x8b, 0xa6, - 0x20, 0xc1, 0xd5, 0x15, 0x50, 0xf7, 0x48, 0xa1, 0x60, 0x17, 0xe7, 0xb9, - 0x15, 0x13, 0xed, 0x26, 0x0f, 0x2c, 0x20, 0x75, 0xb5, 0x57, 0xf9, 0x5a, - 0x50, 0x00, 0xb0, 0xb8, 0xe7, 0x27, 0x6f, 0xa5, 0x3e, 0xa6, 0x3b, 0x48, - 0x09, 0x43, 0x26, 0x6e, 0x48, 0x69, 0x57, 0x8c, 0x27, 0x56, 0x9c, 0x89, - 0x48, 0xec, 0x4d, 0x4c, 0x6c, 0x7c, 0x40, 0x52, 0xed, 0xeb, 0x62, 0x29, - 0xbd, 0x77, 0xf9, 0x92, 0x2c, 0x8a, 0x69, 0xb7, 0x56, 0xf4, 0xcd, 0x6d, - 0x66, 0xed, 0x36, 0x72, 0x86, 0xac, 0xf1, 0x24, 0xac, 0x62, 0xab, 0xad, - 0x54, 0x98, 0x64, 0xaf, 0x96, 0x27, 0x19, 0x5a, 0xd0, 0x3f, 0x89, 0x06, - 0xdb, 0xd4, 0x61, 0xb1, 0x6d, 0x2f, 0x2e, 0x6e, 0xc7, 0x05, 0x5d, 0x8f, - 0x9c, 0x14, 0xfc, 0xa3, 0x43, 0x72, 0xe6, 0x11, 0x4f, 0x7e, 0x8a, 0xfa, - 0xe3, 0x29, 0xe6, 0x17, 0xa1, 0xc2, 0xe4, 0x8f, 0x44, 0x32, 0xfc, 0xc4, - 0x4f, 0x1b, 0x9c, 0x25, 0x37, 0x7c, 0xf7, 0x86, 0x71, 0xd4, 0x51, 0xc2, - 0xef, 0xf2, 0xe2, 0xe0, 0xed, 0xf0, 0xb5, 0x18, 0x59, 0x2f, 0x33, 0x5f, - 0x1c, 0x50, 0x2d, 0x0b, 0xce, 0x13, 0xe9, 0x90, 0xc6, 0xee, 0x05, 0xdc, - 0xdb, 0x82, 0xb4, 0xb5, 0x6c, 0x60, 0xaf, 0x0e, 0x62, 0x2c, 0x65, 0x07, - 0xc1, 0xab, 0xe9, 0x30, 0x6d, 0x16, 0x5b, 0xee, 0x62, 0x2d, 0xc2, 0x6a, - 0x25, 0x1e, 0xe3, 0xce, 0xb0, 0x51, 0xf5, 0x21, 0x26, 0x94, 0x43, 0x1b, - 0x8c, 0x7d, 0x2a, 0xbc, 0x7c, 0x2d, 0xae, 0xe4, 0x21, 0xa9, 0x1e, 0x7d, - 0x85, 0xc5, 0x0f, 0x6a, 0xb3, 0x38, 0xc3, 0x9c, 0xf0, 0x72, 0x45, 0x83, - 0x73, 0x8d, 0x87, 0x89, 0x84, 0xd6, 0xf4, 0xe6, 0x1f, 0x77, 0xb7, 0xda, - 0x9b, 0xbf, 0xfc, 0xa5, 0xcd, 0xb7, 0x8f, 0xdd, 0x64, 0x7d, 0x9f, 0xa7, - 0xb2, 0xf9, 0xc7, 0xbd, 0xad, 0x47, 0x67, 0x14, 0x66, 0xda, 0xf9, 0x3e, - 0xe9, 0x0d, 0x1e, 0x6c, 0xf4, 0xca, 0xea, 0xc0, 0xea, 0x1d, 0xec, 0x62, - 0x3d, 0xae, 0x3c, 0xca, 0x5d, 0x05, 0xf5, 0x81, 0x63, 0x81, 0x9d, 0xe4, - 0xe7, 0x5d, 0x38, 0x9a, 0xb2, 0x70, 0xf2, 0xbf, 0x8f, 0x43, 0x74, 0x40, - 0x52, 0xc4, 0x43, 0x76, 0xc7, 0xe9, 0xe6, 0x45, 0x36, 0x40, 0xdf, 0x7b, - 0x8f, 0xf4, 0xed, 0x67, 0x17, 0xa8, 0xb9, 0xec, 0x0f, 0xe5, 0x80, 0x2a, - 0xc3, 0x83, 0xd5, 0x7e, 0x36, 0x7c, 0xc9, 0xc9, 0xf5, 0xfd, 0x5d, 0x9e, - 0xbc, 0x39, 0x66, 0xdc, 0xd8, 0xa3, 0x13, 0xc6, 0x2f, 0x1b, 0x2a, 0x82, - 0xa0, 0x69, 0xb4, 0x0e, 0x5c, 0x35, 0x04, 0xb7, 0x17, 0x47, 0xa1, 0x8b, - 0x5b, 0x72, 0xa7, 0xdf, 0xed, 0x04, 0x77, 0xad, 0x81, 0xb5, 0x85, 0xa5, - 0xef, 0x9d, 0x5c, 0xf5, 0xdf, 0x64, 0x13, 0x68, 0x5d, 0x7d, 0x81, 0xa3, - 0xa6, 0xb7, 0xe8, 0xc3, 0x77, 0xf3, 0x59, 0xe5, 0xe3, 0x30, 0x49, 0x50, - 0x15, 0xea, 0x8d, 0x75, 0x05, 0x00, 0x7e, 0xde, 0xee, 0xf7, 0x51, 0xf2, - 0x55, 0xe2, 0x83, 0xd4, 0x4b, 0x50, 0xc1, 0x78, 0xb0, 0xb3, 0x4f, 0xeb, - 0x93, 0x4e, 0x57, 0xe2, 0xd1, 0x8e, 0x7d, 0x1c, 0x92, 0xcf, 0x08, 0xbc, - 0xe6, 0xac, 0x24, 0x6f, 0x2c, 0x12, 0x73, 0xd0, 0x46, 0x08, 0x49, 0x09, - 0xb9, 0x3c, 0xb9, 0xf7, 0x81, 0x34, 0x5a, 0x5c, 0x2f, 0x5b, 0xac, 0x30, - 0xc9, 0xfb, 0x8a, 0x8f, 0xbe, 0xd5, 0x51, 0xf7, 0xb3, 0xbc, 0x53, 0x29, - 0x79, 0x21, 0x3d, 0x84, 0x04, 0xa8, 0x9f, 0x68, 0x85, 0x88, 0xb3, 0x3c, - 0x60, 0x60, 0x3a, 0x6c, 0x2b, 0xfa, 0x12, 0xc0, 0x55, 0x06, 0xe8, 0x9a, - 0xd5, 0x71, 0x7a, 0xeb, 0xe5, 0x06, 0x5f, 0x6b, 0x03, 0x36, 0x9a, 0x9b, - 0x97, 0x85, 0xb8, 0xce, 0xa2, 0x5a, 0xbe, 0x2e, 0x89, 0x2c, 0x69, 0x58, - 0x72, 0xc2, 0xbb, 0xfd, 0x2e, 0x10, 0xb5, 0xd3, 0x79, 0xcb, 0x64, 0xfa, - 0xbf, 0x7c, 0x36, 0x0d, 0x1f, 0x5e, 0xd4, 0xb9, 0x62, 0x60, 0x05, 0x76, - 0x88, 0x74, 0x64, 0x00, 0x82, 0x35, 0x22, 0xb4, 0x45, 0xf2, 0x3c, 0xb3, - 0x35, 0xd3, 0x4b, 0x44, 0x47, 0x73, 0x21, 0x96, 0xce, 0xda, 0x2a, 0x46, - 0x2e, 0xe6, 0xa3, 0xcb, 0xc5, 0x04, 0xde, 0x7d, 0x89, 0x6b, 0xfc, 0xcf, - 0x78, 0xbe, 0x8c, 0xf3, 0x55, 0xb4, 0xbb, 0xd7, 0x8b, 0xf6, 0x76, 0x76, - 0xf7, 0x5a, 0xe6, 0xd0, 0xf9, 0x4f, 0x8e, 0xae, 0xd9, 0xc3, 0xd7, 0x9d, - 0x8f, 0x9d, 0x85, 0x8f, 0x91, 0xc7, 0xad, 0xaa, 0xd9, 0xa4, 0xc4, 0x7b, - 0xd8, 0xd1, 0x27, 0x15, 0x6e, 0xb9, 0xa6, 0x1d, 0x00, 0xd1, 0x20, 0x53, - 0x88, 0xcd, 0xc9, 0x6a, 0x4f, 0xb9, 0x32, 0x25, 0xfc, 0xc4, 0x86, 0x96, - 0x15, 0x43, 0x08, 0x85, 0x33, 0xbc, 0xc5, 0x39, 0x0a, 0x6b, 0x55, 0xf7, - 0x28, 0x2d, 0x6d, 0x5b, 0x38, 0x46, 0x83, 0xf7, 0x86, 0xe8, 0xfd, 0xe8, - 0xe4, 0xf0, 0xd2, 0x10, 0xf3, 0xae, 0xf8, 0x3a, 0xcd, 0x57, 0x1f, 0x57, - 0xa3, 0xe8, 0xd1, 0x67, 0x26, 0xfb, 0x37, 0x09, 0x49, 0x64, 0xf3, 0xd1, - 0xf2, 0x7a, 0xff, 0xaf, 0x71, 0x7e, 0x9d, 0xcd, 0x3f, 0xf4, 0xfc, 0x04, - 0x49, 0x4a, 0xfb, 0xc4, 0xa0, 0x76, 0x5f, 0xec, 0x3e, 0x91, 0x08, 0xf8, - 0x94, 0x4b, 0x9a, 0x81, 0x3f, 0x74, 0x67, 0x5d, 0x01, 0x6c, 0x40, 0xe8, - 0xbd, 0x43, 0x69, 0x98, 0x4f, 0xba, 0xa2, 0x6e, 0xc5, 0xe1, 0xb3, 0x13, - 0x7d, 0x56, 0xb2, 0x99, 0xbb, 0x1b, 0x52, 0xbe, 0xb0, 0xcb, 0xa9, 0x7f, - 0xcb, 0x45, 0x77, 0x50, 0x39, 0xe1, 0x1f, 0x98, 0x2b, 0x77, 0xe1, 0x4a, - 0x32, 0x1d, 0x0a, 0x4f, 0x56, 0x76, 0x3a, 0xca, 0x93, 0xf8, 0xd6, 0x17, - 0xb9, 0xf3, 0x68, 0x0e, 0x66, 0x3b, 0xbf, 0x78, 0x7d, 0x28, 0x18, 0x98, - 0x96, 0x83, 0x83, 0xa5, 0x8e, 0x9c, 0xa5, 0x63, 0x8b, 0x47, 0xf9, 0x81, - 0xfe, 0x39, 0x48, 0x7e, 0x7f, 0x32, 0xfa, 0x88, 0x87, 0xe8, 0xdc, 0x09, - 0xdc, 0xd8, 0x41, 0xb5, 0x9c, 0x01, 0xcb, 0xfc, 0x25, 0x93, 0x9a, 0x55, - 0xb3, 0xdb, 0x94, 0x02, 0x6d, 0x62, 0xbb, 0x96, 0x2a, 0xea, 0x5a, 0x74, - 0x57, 0x8d, 0x05, 0x34, 0x6e, 0xae, 0x7e, 0x76, 0x74, 0x70, 0x1e, 0xe8, - 0x4d, 0xd0, 0x4b, 0xbc, 0x8d, 0x88, 0x9f, 0x63, 0x99, 0x19, 0x05, 0x33, - 0xc5, 0x94, 0xb4, 0xea, 0x79, 0x69, 0xb7, 0x04, 0x9f, 0x9c, 0xdc, 0xc5, - 0x12, 0x69, 0x9d, 0xe9, 0x75, 0x02, 0x73, 0x06, 0xf0, 0xbc, 0xa7, 0x93, - 0x18, 0x1e, 0x35, 0xbd, 0x84, 0x20, 0x84, 0xa2, 0xad, 0x54, 0xc3, 0x6a, - 0x68, 0x6f, 0x1e, 0x22, 0xcd, 0x06, 0xd0, 0xb4, 0x07, 0xf9, 0x5d, 0x1e, - 0xe3, 0x4c, 0xd7, 0x95, 0x4d, 0x40, 0xf8, 0x33, 0x0d, 0x3e, 0x2e, 0x6e, - 0x89, 0x95, 0x8a, 0x27, 0x98, 0x7a, 0x4f, 0xc7, 0x89, 0xd9, 0x54, 0x27, - 0xa9, 0x44, 0x64, 0xb0, 0x35, 0x03, 0x58, 0x3a, 0x95, 0x0d, 0x93, 0x1b, - 0x88, 0x95, 0x97, 0x69, 0x91, 0x08, 0xee, 0x5d, 0x74, 0x79, 0x9f, 0x89, - 0xd0, 0xe9, 0x00, 0x07, 0x24, 0xa6, 0xb1, 0x58, 0xa6, 0x02, 0x9d, 0x41, - 0x9b, 0x07, 0x7e, 0x10, 0x94, 0x57, 0xeb, 0x38, 0x43, 0xca, 0x91, 0x73, - 0xa0, 0x0d, 0x8f, 0xbe, 0x89, 0x38, 0x47, 0x9b, 0xfb, 0x38, 0xe4, 0x9a, - 0x04, 0xec, 0x0b, 0x9f, 0x41, 0x91, 0xf8, 0x6a, 0xc9, 0xe7, 0xfd, 0xf0, - 0x26, 0x5e, 0xb0, 0x48, 0xbc, 0xbb, 0xc3, 0xda, 0xf7, 0x77, 0x96, 0xed, - 0xc5, 0x07, 0xd5, 0xca, 0x91, 0x16, 0x9d, 0x40, 0x31, 0x9f, 0x70, 0x35, - 0x51, 0x96, 0x89, 0xab, 0x36, 0x3f, 0xba, 0x3d, 0x8b, 0xed, 0x19, 0x33, - 0xac, 0x69, 0x41, 0xa4, 0x91, 0x17, 0x93, 0xdb, 0xed, 0x31, 0xfd, 0xf3, - 0x64, 0x67, 0x1b, 0x50, 0x8c, 0x25, 0x4c, 0x64, 0x4c, 0x93, 0x7b, 0x7b, - 0xcf, 0x9e, 0xf5, 0xa2, 0x0e, 0x1b, 0xad, 0xac, 0x03, 0x3e, 0x12, 0x74, - 0xb2, 0x3a, 0x6d, 0x75, 0xe6, 0xb6, 0xf3, 0xab, 0x31, 0xff, 0xc7, 0xaf, - 0x59, 0xad, 0xa8, 0x4b, 0x4d, 0xdf, 0xc0, 0x3a, 0xcc, 0x43, 0xac, 0x15, - 0x23, 0xab, 0x7b, 0xda, 0x07, 0x33, 0x4b, 0xb0, 0x07, 0x62, 0x91, 0x64, - 0x0b, 0x73, 0x33, 0xce, 0x14, 0x20, 0x1f, 0xdd, 0x07, 0xce, 0x19, 0x38, - 0x86, 0x25, 0xae, 0x4a, 0x13, 0xeb, 0x8b, 0xe5, 0xa8, 0xaf, 0x19, 0xa6, - 0xa2, 0x67, 0xa4, 0x74, 0x72, 0xe9, 0xcf, 0xa9, 0x59, 0x7f, 0x1b, 0x1c, - 0xf9, 0xcb, 0xa8, 0xa3, 0xb4, 0xc5, 0x3f, 0x06, 0xf0, 0x12, 0x26, 0x63, - 0x9e, 0x46, 0xf6, 0x4a, 0xff, 0xf8, 0x8f, 0xff, 0xa0, 0x66, 0xff, 0x83, - 0x5b, 0x79, 0xf5, 0xc7, 0xa2, 0xbc, 0x09, 0x9e, 0xe9, 0x28, 0xc1, 0x9f, - 0x78, 0x1f, 0x29, 0xe2, 0x9e, 0x00, 0x54, 0x8a, 0x44, 0xa8, 0x37, 0xa7, - 0xca, 0x91, 0x7b, 0xc1, 0xfc, 0x52, 0xa4, 0xa8, 0x89, 0xcd, 0xcd, 0x85, - 0x1d, 0x7c, 0xc9, 0xfe, 0xcb, 0x84, 0x53, 0x9b, 0x89, 0x0a, 0x81, 0x44, - 0xb7, 0x65, 0x22, 0xc6, 0xf1, 0xdb, 0x6f, 0x4f, 0x2e, 0xce, 0xde, 0xbe, - 0x39, 0x7e, 0x7b, 0x19, 0x7d, 0x7b, 0x70, 0x71, 0x72, 0xf0, 0xe5, 0xa9, - 0x66, 0x50, 0xf3, 0x14, 0x38, 0x5a, 0x44, 0x44, 0xef, 0x1a, 0x8e, 0x68, - 0x90, 0xd1, 0xd2, 0x0a, 0x9e, 0x5f, 0x2b, 0x17, 0xf8, 0x5e, 0x81, 0xa9, - 0x61, 0x5e, 0x7d, 0x8f, 0x02, 0x16, 0x3d, 0x76, 0xf8, 0xbd, 0xb7, 0x5a, - 0x16, 0x6c, 0xb6, 0x5c, 0x05, 0x39, 0xb9, 0x1c, 0xc8, 0xc2, 0x54, 0x6a, - 0xfc, 0xc9, 0xd7, 0x1d, 0x52, 0x78, 0xff, 0x41, 0xf4, 0x95, 0xa4, 0x75, - 0x6b, 0x48, 0x95, 0x7b, 0x55, 0x53, 0x8c, 0x60, 0xc6, 0x71, 0x63, 0x38, - 0x38, 0x3d, 0xf5, 0x5d, 0x3d, 0x5e, 0x85, 0x41, 0xe1, 0x7c, 0x24, 0x0b, - 0xe8, 0xc6, 0x2a, 0x0a, 0x5f, 0x67, 0x1e, 0x65, 0x7b, 0xbe, 0x0a, 0x01, - 0xb5, 0xb9, 0x33, 0xda, 0x8e, 0x4d, 0xc1, 0x62, 0x60, 0x77, 0x23, 0x1d, - 0xa0, 0xb4, 0xb8, 0xed, 0x45, 0xdd, 0x3f, 0x76, 0x25, 0x3b, 0x2b, 0x01, - 0xdc, 0xac, 0xd4, 0x78, 0xd8, 0xf2, 0x83, 0x7a, 0x7b, 0xe6, 0xc7, 0xa4, - 0x4e, 0x34, 0x37, 0x00, 0xf7, 0xa2, 0xf7, 0x7f, 0x16, 0x26, 0xcf, 0x20, - 0xf0, 0xd0, 0x3f, 0xae, 0x88, 0xfe, 0x2e, 0xc5, 0x5c, 0x69, 0x94, 0xfd, - 0x24, 0xad, 0xef, 0x42, 0x69, 0x8b, 0xc7, 0x01, 0xaa, 0xb0, 0x98, 0x71, - 0x58, 0xf9, 0x85, 0x1c, 0x20, 0xf5, 0x8f, 0xe5, 0x72, 0x78, 0x90, 0xb2, - 0xd9, 0x1b, 0x56, 0xac, 0x57, 0x39, 0x28, 0xa8, 0xea, 0x61, 0xdb, 0x6a, - 0x3d, 0xc0, 0x65, 0xc5, 0x81, 0xe5, 0x79, 0x3a, 0x51, 0x9c, 0xba, 0x56, - 0xaa, 0x18, 0xc0, 0xd3, 0x71, 0x71, 0x08, 0x50, 0xef, 0x39, 0x17, 0x80, - 0x72, 0x85, 0x10, 0x24, 0x08, 0x95, 0xb8, 0x48, 0xce, 0x99, 0x5d, 0x73, - 0x15, 0x42, 0x10, 0xd8, 0x09, 0x11, 0x3d, 0xbe, 0xce, 0x4c, 0xfc, 0x8e, - 0x9d, 0xfb, 0x55, 0x32, 0xb6, 0x24, 0x66, 0xc7, 0xa4, 0x30, 0x07, 0x44, - 0xe5, 0x2c, 0x60, 0x70, 0xd4, 0x9a, 0xbd, 0x99, 0xe3, 0x94, 0x60, 0x2f, - 0xd3, 0x38, 0x86, 0x22, 0x48, 0xf7, 0xf5, 0x61, 0xf0, 0xcc, 0x4b, 0xc4, - 0x45, 0x69, 0xc8, 0x50, 0xc0, 0xdf, 0xb2, 0xf4, 0x60, 0x44, 0xcc, 0x61, - 0x58, 0xfc, 0x20, 0x9a, 0xd4, 0xe0, 0x47, 0x34, 0x69, 0xa6, 0x50, 0x3a, - 0x3d, 0x53, 0xce, 0x44, 0x32, 0x4e, 0x14, 0x47, 0xa3, 0xf4, 0x3a, 0x32, - 0x2b, 0x48, 0xc4, 0x54, 0x02, 0x94, 0xb0, 0x6c, 0x96, 0xf0, 0x56, 0x01, - 0x03, 0x0c, 0xb2, 0xfb, 0x0d, 0x57, 0x88, 0xf7, 0xa0, 0x55, 0x36, 0x93, - 0x82, 0x23, 0xf5, 0x03, 0x2b, 0x1a, 0x2c, 0xe9, 0x4b, 0x5e, 0x47, 0x0b, - 0x6b, 0x52, 0x7c, 0x6b, 0x0d, 0xf2, 0x62, 0x13, 0x2d, 0xe0, 0xf6, 0xe6, - 0x48, 0x29, 0xb1, 0xf4, 0x5c, 0xac, 0x83, 0x05, 0xc0, 0x32, 0xb7, 0x80, - 0x65, 0x85, 0xab, 0x4d, 0x6d, 0x3a, 0x80, 0x6a, 0x6e, 0x65, 0x2c, 0x10, - 0x9f, 0x4c, 0xf4, 0x12, 0x9f, 0x5e, 0xa9, 0x26, 0x61, 0x9b, 0xa5, 0x50, - 0x4c, 0x57, 0x52, 0xd6, 0x9e, 0xc6, 0xb7, 0x19, 0x30, 0x9e, 0x39, 0x91, - 0x88, 0x3c, 0x26, 0xfa, 0xa3, 0xfe, 0xd5, 0x17, 0xef, 0x65, 0x6c, 0x85, - 0xb7, 0x8a, 0x2d, 0xef, 0xc1, 0x16, 0x29, 0x80, 0xa9, 0x75, 0xac, 0x05, - 0xad, 0x30, 0x5e, 0xda, 0x2f, 0x33, 0x44, 0x85, 0x76, 0xac, 0xc8, 0x32, - 0x37, 0xa6, 0xd3, 0x00, 0xa2, 0x5a, 0xcc, 0x11, 0x71, 0x43, 0xf8, 0x70, - 0xe5, 0xe9, 0x0f, 0x34, 0x86, 0x44, 0xe0, 0x6c, 0x83, 0x99, 0x68, 0x74, - 0x32, 0x8b, 0x67, 0x35, 0xf3, 0x58, 0xc0, 0xd1, 0xcc, 0xdb, 0x1a, 0xde, - 0x4c, 0x5a, 0x19, 0x21, 0x8d, 0x67, 0x22, 0x3c, 0x7a, 0xf2, 0x9b, 0xad, - 0x24, 0x7e, 0x6d, 0x63, 0xe3, 0xf0, 0xdd, 0xf0, 0xf2, 0xec, 0x4d, 0x74, - 0xf6, 0xee, 0xf2, 0xfc, 0xdd, 0xa5, 0x5e, 0x5d, 0x23, 0x89, 0xfe, 0x15, - 0x1d, 0x51, 0xa4, 0x00, 0xdb, 0xcd, 0x99, 0xba, 0x90, 0x11, 0xac, 0x90, - 0x01, 0x9a, 0x2e, 0x40, 0xa9, 0x71, 0xd9, 0x3d, 0xc0, 0x6e, 0x12, 0xc4, - 0x5b, 0xac, 0xf9, 0x3d, 0xad, 0x39, 0x32, 0x33, 0x61, 0xdb, 0xb1, 0x64, - 0x21, 0xe8, 0x3d, 0xed, 0x55, 0x47, 0x6a, 0x75, 0xcc, 0xe0, 0xec, 0xad, - 0x82, 0x02, 0xf9, 0x88, 0x1c, 0xb3, 0xed, 0x78, 0xd3, 0x4f, 0x18, 0x1c, - 0x88, 0xb0, 0x98, 0x71, 0x69, 0xc6, 0x4c, 0x8b, 0xcf, 0x44, 0xd0, 0x4a, - 0x35, 0x45, 0x2d, 0xcc, 0x94, 0x2b, 0x33, 0x9a, 0xe1, 0x8d, 0x8b, 0xad, - 0xe6, 0x78, 0x14, 0xc4, 0x94, 0x89, 0x43, 0x9e, 0x83, 0xb7, 0xac, 0xc0, - 0xfc, 0x3d, 0x9b, 0xc0, 0x1b, 0xd7, 0xec, 0x7d, 0xd4, 0xfd, 0x2e, 0x09, - 0x1b, 0xfc, 0xfd, 0xdf, 0x39, 0x01, 0xf0, 0xbd, 0x7d, 0xf2, 0x0f, 0xe9, - 0xf2, 0x2f, 0xf3, 0x2e, 0x42, 0xb1, 0xaa, 0x9e, 0xd7, 0x6f, 0x8e, 0x2f, - 0xbe, 0x3c, 0xbe, 0x38, 0x1b, 0x22, 0xfc, 0xc4, 0xcc, 0x5d, 0x4d, 0x62, - 0xbf, 0x4d, 0xf2, 0x51, 0x92, 0x67, 0x5a, 0x48, 0xc6, 0xfe, 0x7a, 0xb6, - 0xfd, 0xd5, 0x70, 0x78, 0x70, 0x7e, 0xe2, 0x6a, 0x8e, 0xb8, 0x54, 0x24, - 0xd1, 0x91, 0xe6, 0x92, 0x2c, 0xc7, 0xf3, 0xb7, 0x57, 0x88, 0x2e, 0xc6, - 0xb7, 0x12, 0xa2, 0xda, 0xf0, 0x71, 0x9a, 0x8d, 0x96, 0x9d, 0x9b, 0x9a, - 0xa1, 0xc6, 0x0d, 0x1b, 0xba, 0x90, 0x24, 0x6a, 0x0b, 0x01, 0xbf, 0x66, - 0x93, 0x72, 0xcf, 0x85, 0x71, 0xdd, 0xe6, 0xa3, 0x3e, 0x11, 0xfa, 0xad, - 0xd5, 0x87, 0x94, 0x60, 0x7a, 0x62, 0x93, 0x12, 0x65, 0xeb, 0xed, 0x0c, - 0xb7, 0x5c, 0x15, 0x76, 0xfb, 0x96, 0x8f, 0x06, 0x97, 0xc5, 0x98, 0x0e, - 0x84, 0xb3, 0xcb, 0x59, 0xb2, 0xd0, 0x49, 0x66, 0xaf, 0x8f, 0x81, 0x1d, - 0x50, 0x6f, 0xae, 0x5e, 0x95, 0x98, 0xba, 0xe8, 0x93, 0xa7, 0x0e, 0xf4, - 0x29, 0x2c, 0x18, 0x7a, 0x45, 0xc2, 0xf7, 0xe2, 0x7e, 0xa2, 0x17, 0x08, - 0x20, 0x8e, 0xe7, 0x62, 0xe5, 0x16, 0xfe, 0x5d, 0xf7, 0x75, 0x70, 0x81, - 0x2d, 0x44, 0xfd, 0x6b, 0x4c, 0x73, 0x34, 0x9a, 0xc6, 0xf3, 0x5b, 0xdc, - 0x64, 0xb8, 0x9b, 0x58, 0xdd, 0x34, 0x2c, 0x23, 0x2e, 0x47, 0x06, 0xd7, - 0x96, 0xc2, 0x0b, 0x40, 0x00, 0xb4, 0xe2, 0xe7, 0x6c, 0xd9, 0x75, 0x90, - 0x4d, 0x81, 0x13, 0x07, 0x27, 0xc9, 0x2f, 0x02, 0x5b, 0x8d, 0x8e, 0x4f, - 0xe9, 0x52, 0x72, 0x99, 0x0a, 0x50, 0xcf, 0x93, 0x29, 0x03, 0xef, 0x58, - 0x70, 0x89, 0x24, 0xe7, 0xa5, 0x60, 0x62, 0xc2, 0x38, 0x0c, 0x7d, 0x1b, - 0x6e, 0x08, 0x50, 0x0a, 0x72, 0x10, 0x0b, 0x57, 0xa3, 0x42, 0xb9, 0xb6, - 0x30, 0x30, 0x80, 0x4b, 0xfa, 0x92, 0x15, 0x61, 0x11, 0x13, 0x8d, 0xd9, - 0x3a, 0xf4, 0xa1, 0x25, 0xb1, 0x7d, 0x27, 0x83, 0xf0, 0x22, 0xa9, 0x73, - 0x56, 0x55, 0x52, 0x24, 0xd6, 0x6e, 0x93, 0xbc, 0xde, 0x66, 0x00, 0x00, - 0x03, 0xa4, 0x06, 0xc4, 0xfa, 0xed, 0xe0, 0x65, 0x2c, 0xee, 0xb5, 0x1a, - 0x6b, 0x6a, 0x03, 0x1f, 0x58, 0x75, 0x75, 0x84, 0x3f, 0x89, 0xff, 0x09, - 0x71, 0x92, 0x7a, 0xfb, 0x96, 0x13, 0x70, 0x9b, 0xbc, 0x82, 0x74, 0x1a, - 0x86, 0x78, 0x0a, 0x02, 0x02, 0xcc, 0x82, 0x12, 0xf4, 0x0f, 0x0d, 0xc6, - 0xc9, 0xb6, 0xfd, 0xb7, 0x7c, 0x55, 0x64, 0xfd, 0xd1, 0x12, 0x3a, 0x99, - 0xc7, 0xea, 0xd2, 0x44, 0x40, 0x2e, 0x0a, 0x0c, 0x70, 0x2e, 0x7c, 0xcf, - 0x6e, 0x0d, 0xa4, 0x58, 0x8b, 0xa7, 0x03, 0x39, 0x77, 0x55, 0xe0, 0x16, - 0x07, 0xd7, 0x21, 0x81, 0xec, 0x08, 0xe8, 0xd5, 0xa8, 0x65, 0x1d, 0xa1, - 0x6e, 0xb2, 0x0b, 0x39, 0x9b, 0x6b, 0xd5, 0x3c, 0xd8, 0xd9, 0xab, 0x61, - 0xbb, 0xa5, 0x43, 0x4b, 0xbf, 0x84, 0x88, 0x90, 0x28, 0x86, 0xb8, 0xc5, - 0xe3, 0x5a, 0xf4, 0xff, 0x5d, 0xc9, 0xf5, 0x81, 0x04, 0x69, 0x20, 0x9e, - 0x4a, 0x91, 0x87, 0xb5, 0xb7, 0x88, 0x1c, 0xa6, 0xf2, 0xf2, 0xf2, 0x87, - 0xf3, 0xe3, 0x57, 0xf6, 0xe6, 0x63, 0x7b, 0x26, 0x00, 0x5c, 0x08, 0xbf, - 0x48, 0x14, 0xec, 0x32, 0xa8, 0xc1, 0x49, 0x44, 0xd6, 0x2f, 0xcd, 0x2d, - 0x2c, 0xdd, 0xf4, 0xa3, 0xef, 0x8f, 0x4e, 0x86, 0xe7, 0xa7, 0x67, 0x87, - 0xaf, 0x5e, 0x7e, 0x6f, 0xdc, 0xf8, 0x73, 0x46, 0x9c, 0x11, 0x19, 0xcd, - 0x7d, 0xe6, 0x01, 0x02, 0xf4, 0xbd, 0xb7, 0xc7, 0xdf, 0xbd, 0x27, 0xcd, - 0xe0, 0x15, 0x83, 0x82, 0xf7, 0xee, 0xe2, 0xa9, 0xbe, 0xc4, 0xea, 0x55, - 0x8b, 0x5c, 0x17, 0xa4, 0x73, 0xb4, 0x2d, 0x2c, 0xcb, 0x13, 0x01, 0x42, - 0xeb, 0x0a, 0x12, 0xb4, 0x46, 0x64, 0x05, 0xf5, 0x84, 0xe2, 0x4a, 0x6e, - 0x66, 0x4b, 0x71, 0xc6, 0xcc, 0xdd, 0xfc, 0xdd, 0x52, 0x22, 0xf3, 0xd8, - 0x1b, 0x1d, 0x3a, 0x79, 0x11, 0xfc, 0xa8, 0xdf, 0xf8, 0xa0, 0x50, 0x85, - 0xdf, 0xcd, 0x39, 0x16, 0xc2, 0x61, 0x19, 0x6a, 0x85, 0x4c, 0xb8, 0x4f, - 0x15, 0xf0, 0x50, 0x91, 0x7c, 0x38, 0x0e, 0xd3, 0x42, 0xb2, 0x5d, 0x15, - 0x66, 0x11, 0x5f, 0xdc, 0x58, 0xe2, 0xf1, 0x98, 0x7e, 0x30, 0xc6, 0x24, - 0x97, 0x73, 0x39, 0xe7, 0xaa, 0xec, 0xc3, 0x4b, 0x56, 0xa1, 0xb4, 0x6a, - 0x99, 0x9a, 0x9f, 0xad, 0xa4, 0x1c, 0x12, 0xff, 0xab, 0xd8, 0x95, 0x61, - 0xa9, 0x89, 0xca, 0x89, 0x76, 0x6c, 0xae, 0x9a, 0x09, 0xc8, 0x56, 0x04, - 0x49, 0x2f, 0x64, 0x21, 0x54, 0x10, 0x58, 0xe3, 0x2b, 0x3b, 0xc0, 0x99, - 0x92, 0x46, 0xad, 0xe2, 0x02, 0xaa, 0xa5, 0x60, 0x77, 0xa6, 0xe9, 0xc8, - 0x1b, 0xcc, 0x6b, 0x9e, 0x48, 0x76, 0x74, 0x2b, 0xe2, 0x43, 0x78, 0x84, - 0xcc, 0x14, 0xee, 0xd3, 0x6b, 0x8b, 0xcc, 0xca, 0x27, 0x0a, 0xf1, 0xc3, - 0x54, 0x1d, 0x26, 0x41, 0x3a, 0x25, 0x15, 0x8a, 0x89, 0x89, 0x68, 0xee, - 0xd3, 0x20, 0x94, 0x51, 0x41, 0x84, 0x80, 0x7d, 0xaa, 0x2c, 0x1b, 0xf5, - 0xca, 0x25, 0x9d, 0x89, 0x8d, 0x2c, 0x24, 0xb0, 0x20, 0x3d, 0x1b, 0x21, - 0x27, 0x3a, 0xb3, 0x86, 0xf4, 0xa1, 0x62, 0xe3, 0x35, 0xe7, 0x41, 0x01, - 0xa9, 0x69, 0xc2, 0xa2, 0x16, 0xac, 0x6f, 0x61, 0x67, 0x76, 0x93, 0xf2, - 0x0a, 0x8e, 0x96, 0x61, 0x3d, 0x2f, 0x37, 0x7a, 0x29, 0x69, 0x81, 0x85, - 0x47, 0xb0, 0x5d, 0x9c, 0x03, 0x09, 0xb1, 0x54, 0xa4, 0x71, 0x53, 0x7a, - 0x34, 0x72, 0x6e, 0x50, 0x05, 0x85, 0x31, 0xba, 0xb4, 0x52, 0x7d, 0x8f, - 0xad, 0xa8, 0x5b, 0x4d, 0x21, 0xdf, 0x3c, 0xb1, 0x10, 0x18, 0x31, 0x31, - 0x14, 0xec, 0x6b, 0x98, 0x8f, 0xdd, 0x65, 0xcc, 0x99, 0x2b, 0x1c, 0x0a, - 0x92, 0x2b, 0xe0, 0xce, 0x92, 0x8b, 0xa3, 0x6b, 0x05, 0x51, 0xd4, 0xbf, - 0x64, 0x87, 0x9b, 0x81, 0xb1, 0xf9, 0x58, 0x60, 0x59, 0xee, 0x80, 0xac, - 0xc4, 0xb4, 0xbe, 0xd2, 0x0e, 0x5d, 0x96, 0xb5, 0x6d, 0x56, 0x4f, 0x92, - 0x76, 0x62, 0xe4, 0x88, 0x98, 0x4d, 0x37, 0xc8, 0x35, 0x2c, 0x34, 0x83, - 0xd3, 0x39, 0x2b, 0x85, 0xe1, 0xa1, 0x62, 0x91, 0xcf, 0x79, 0xaa, 0x38, - 0x05, 0x49, 0xb2, 0x5c, 0xa0, 0xfc, 0xce, 0x58, 0x11, 0xc8, 0x11, 0xfc, - 0xe9, 0xda, 0xb3, 0x3b, 0xc4, 0xaf, 0x15, 0x2d, 0xea, 0x9b, 0x77, 0xa7, - 0x97, 0x27, 0xe7, 0xa1, 0xe3, 0x31, 0xfa, 0xee, 0xe4, 0xf2, 0x6b, 0x92, - 0xd7, 0xb9, 0xb6, 0xf3, 0x29, 0x7b, 0x77, 0xde, 0xbc, 0x39, 0x78, 0xcb, - 0x19, 0xea, 0x6f, 0x11, 0x23, 0x77, 0x00, 0x9d, 0x81, 0xb9, 0x11, 0xad, - 0x30, 0x93, 0x0e, 0xe7, 0x2e, 0xf7, 0x9a, 0x5e, 0x86, 0xda, 0xe9, 0x03, - 0xc3, 0xe1, 0x23, 0x14, 0xae, 0x11, 0x6f, 0xb8, 0xea, 0x04, 0x2b, 0xb6, - 0xe9, 0xe0, 0xd4, 0xb2, 0x9e, 0xc5, 0xeb, 0x5c, 0x87, 0x1e, 0x47, 0x9e, - 0x9c, 0xc8, 0xe6, 0xf0, 0xa9, 0xca, 0xd5, 0xed, 0x3d, 0x17, 0xd8, 0x50, - 0x07, 0x62, 0x8a, 0x98, 0x55, 0x12, 0x99, 0xe6, 0xaa, 0xd2, 0xc8, 0x75, - 0x59, 0x8d, 0x5b, 0xa7, 0x1e, 0x31, 0x24, 0x38, 0x95, 0x33, 0x6f, 0x0c, - 0x64, 0x65, 0x93, 0xf5, 0xe5, 0x8b, 0xd3, 0xf0, 0x3e, 0xad, 0xd6, 0x0f, - 0xb6, 0x40, 0xb3, 0xeb, 0x2c, 0xf1, 0x07, 0xb7, 0x7f, 0x66, 0xcd, 0x98, - 0xe5, 0x17, 0x1a, 0x98, 0xdc, 0x2d, 0x7d, 0x66, 0x6b, 0x7d, 0xda, 0x92, - 0x2d, 0x57, 0xa3, 0x46, 0x2d, 0x67, 0xfb, 0x22, 0x55, 0x56, 0xaa, 0x78, - 0x03, 0x39, 0xf6, 0xcc, 0xb5, 0xac, 0x01, 0x0d, 0x88, 0xeb, 0xd5, 0xd4, - 0x18, 0x9d, 0x33, 0x98, 0xa5, 0x3d, 0x56, 0xc9, 0xec, 0xad, 0x95, 0x12, - 0xb7, 0xd4, 0x28, 0x24, 0x44, 0x32, 0x84, 0x8b, 0xf7, 0x99, 0xa2, 0x2c, - 0x57, 0x96, 0x0d, 0x92, 0x87, 0x84, 0xdd, 0x9b, 0xfc, 0xeb, 0x5f, 0x17, - 0xd7, 0x61, 0xd6, 0x14, 0xe6, 0xaa, 0xe9, 0xc1, 0xed, 0x98, 0xc0, 0x22, - 0x15, 0x69, 0x71, 0xb2, 0xca, 0x08, 0xb4, 0xe2, 0xd8, 0xee, 0xba, 0x0e, - 0xf5, 0xfb, 0xbd, 0xe6, 0xf7, 0x7b, 0x62, 0x71, 0xe4, 0x0a, 0xf4, 0x0e, - 0x4f, 0x53, 0x72, 0x81, 0x43, 0xe9, 0xcd, 0x64, 0x02, 0xa6, 0x30, 0x29, - 0x56, 0x0f, 0xb7, 0x8a, 0xb0, 0x44, 0x31, 0xfb, 0x73, 0x2c, 0xd2, 0x32, - 0x47, 0x8e, 0x23, 0x1e, 0x81, 0x85, 0x58, 0x02, 0x48, 0x11, 0xae, 0x05, - 0x36, 0xc5, 0xb7, 0x15, 0x35, 0x48, 0xdf, 0x3f, 0x75, 0x01, 0xdd, 0x9e, - 0xa5, 0xa1, 0xc0, 0x97, 0x66, 0xd4, 0xf4, 0xd3, 0xc5, 0x9d, 0x15, 0xb8, - 0xa4, 0x5f, 0x9f, 0xbb, 0xe2, 0x2e, 0x45, 0xc5, 0x3d, 0x55, 0x01, 0xae, - 0x35, 0xde, 0x8f, 0xc1, 0x21, 0xc0, 0x8e, 0x19, 0x83, 0xc3, 0x7c, 0x1d, - 0xd4, 0xc6, 0x95, 0x54, 0x43, 0x7b, 0x83, 0x52, 0x93, 0xb0, 0x2d, 0x4f, - 0x91, 0x5d, 0x09, 0x76, 0x14, 0xf0, 0x96, 0x10, 0x27, 0x5e, 0x77, 0xfd, - 0xc7, 0xbd, 0x9d, 0x9d, 0xdd, 0xfd, 0xdd, 0xcf, 0x5e, 0xec, 0xec, 0xef, - 0xee, 0xee, 0xee, 0xed, 0xef, 0xee, 0xef, 0xef, 0xed, 0xfc, 0xb4, 0xcd, - 0xa6, 0xa3, 0xbb, 0x34, 0xb9, 0x77, 0x95, 0xe4, 0xbf, 0x93, 0x6b, 0x1a, - 0xfe, 0x82, 0x95, 0xb8, 0x01, 0x99, 0x4b, 0xaa, 0x86, 0x6b, 0x82, 0x8f, - 0x43, 0x26, 0x90, 0xe0, 0x6b, 0x01, 0x24, 0x5b, 0xf8, 0x6c, 0x45, 0x9c, - 0xc1, 0x00, 0x30, 0x19, 0xa3, 0xfa, 0xdb, 0x92, 0x67, 0x3a, 0x62, 0x69, - 0x00, 0x22, 0x4d, 0xe1, 0x72, 0xc3, 0xae, 0xa7, 0xd9, 0x68, 0x84, 0x00, - 0x78, 0x97, 0x1e, 0x39, 0x88, 0x18, 0x99, 0xf3, 0x56, 0x48, 0x42, 0x9d, - 0x06, 0x08, 0x4f, 0x93, 0x83, 0xee, 0x57, 0x47, 0xe4, 0x2e, 0x0d, 0xc9, - 0x1d, 0x67, 0x8c, 0x4a, 0x3f, 0x61, 0xa6, 0x44, 0x8b, 0x94, 0xbb, 0xb4, - 0x89, 0xe8, 0x2a, 0xf9, 0x6c, 0x67, 0x7f, 0x9f, 0x0b, 0x47, 0xfc, 0x7e, - 0xb7, 0xa7, 0x91, 0x85, 0x61, 0xb8, 0x74, 0xcf, 0xdd, 0x4e, 0xd2, 0x06, - 0x6b, 0x1f, 0xe1, 0x3c, 0xe7, 0xcb, 0x59, 0x92, 0xab, 0x1e, 0x82, 0xfb, - 0x50, 0x00, 0x64, 0x98, 0x18, 0x6d, 0xc8, 0xee, 0x59, 0x94, 0x42, 0x81, - 0x49, 0x5e, 0xf2, 0x1b, 0xfc, 0xe5, 0xa9, 0xe7, 0x1c, 0x47, 0x65, 0x2e, - 0x45, 0x26, 0xf9, 0x61, 0x08, 0xe4, 0x40, 0xc5, 0xc8, 0x6e, 0x43, 0x59, - 0x55, 0x73, 0x3a, 0x7e, 0x0c, 0x06, 0xbf, 0xf7, 0x6c, 0xf7, 0x27, 0x09, - 0x64, 0x63, 0x02, 0xf7, 0xab, 0xa0, 0xa5, 0xc1, 0x26, 0x2a, 0x8f, 0x48, - 0x1a, 0x98, 0x12, 0xc6, 0x66, 0x32, 0xb8, 0x1e, 0x98, 0x90, 0xa0, 0x86, - 0xc3, 0x5e, 0x18, 0x4e, 0x2c, 0x08, 0xd6, 0x52, 0x93, 0x1d, 0x6a, 0x97, - 0xd9, 0x86, 0xcc, 0xb6, 0x2b, 0x76, 0xc9, 0x4a, 0x8d, 0x97, 0x0d, 0xba, - 0x32, 0x0e, 0x4e, 0x4e, 0x39, 0x5e, 0xe5, 0x94, 0x24, 0xb0, 0xa1, 0xb1, - 0x32, 0x84, 0xf4, 0x20, 0xde, 0x66, 0x9e, 0xf2, 0x6d, 0xda, 0x73, 0xd0, - 0xf2, 0x16, 0x16, 0x0f, 0xb1, 0x82, 0xed, 0xee, 0x22, 0x99, 0x2b, 0x0e, - 0x14, 0xc9, 0xc3, 0xc4, 0xcf, 0x0a, 0x31, 0xa7, 0x00, 0x6e, 0x91, 0x71, - 0x88, 0xe1, 0xe3, 0x80, 0xc4, 0x2b, 0x0b, 0x8f, 0x6a, 0x16, 0x79, 0x32, - 0x4d, 0xee, 0xd4, 0xee, 0x21, 0xe0, 0x75, 0x5f, 0xa9, 0x7b, 0x41, 0x8a, - 0xd9, 0x95, 0xde, 0x4b, 0x52, 0xf1, 0x60, 0x70, 0x9f, 0xdb, 0x92, 0xf7, - 0xef, 0xd3, 0xb9, 0x51, 0xfc, 0xd7, 0x01, 0x2e, 0x9b, 0x37, 0x87, 0xdf, - 0xeb, 0xb3, 0x08, 0xaa, 0x71, 0x48, 0xef, 0x0a, 0xcd, 0xd8, 0xad, 0x47, - 0x05, 0x8a, 0x2a, 0x6f, 0xe5, 0x90, 0xc4, 0x2c, 0xd6, 0x33, 0x4c, 0x4c, - 0x31, 0xe6, 0xb1, 0xd4, 0xd2, 0x63, 0x13, 0x0a, 0x5a, 0xba, 0x22, 0x79, - 0x89, 0x91, 0xcf, 0x7b, 0x91, 0x2f, 0x1c, 0x9f, 0x4d, 0xe9, 0x4f, 0x04, - 0x3a, 0xf0, 0xaa, 0xe3, 0x59, 0xc6, 0xf4, 0x0b, 0xc2, 0x8f, 0xe8, 0x4f, - 0x09, 0x7b, 0xd5, 0xbf, 0xd0, 0x54, 0xbe, 0x04, 0x74, 0x64, 0x4f, 0x88, - 0x95, 0xfd, 0x01, 0xe5, 0x78, 0xe0, 0x46, 0xaf, 0xee, 0x38, 0x19, 0xff, - 0x91, 0x79, 0x8b, 0x8c, 0x4d, 0x64, 0xb9, 0xad, 0xae, 0xec, 0xc2, 0x48, - 0xaa, 0x57, 0x7d, 0xb9, 0x64, 0x3b, 0xb5, 0xab, 0xce, 0xc0, 0xa3, 0x98, - 0x31, 0x69, 0x25, 0x52, 0x28, 0xce, 0x35, 0xce, 0x02, 0xd7, 0x92, 0x76, - 0x57, 0x5a, 0x3f, 0xcd, 0xee, 0xb9, 0xca, 0xdd, 0xd5, 0x15, 0xd7, 0x2d, - 0x3f, 0x9b, 0x7b, 0x88, 0x48, 0xe6, 0xaa, 0xf2, 0xe0, 0xcc, 0x4a, 0x6b, - 0xd0, 0xdc, 0xac, 0x80, 0xbd, 0x05, 0x2e, 0x0e, 0xa2, 0x03, 0xac, 0x12, - 0xc9, 0x42, 0x68, 0x4e, 0xdc, 0x6c, 0x10, 0x07, 0x6b, 0x71, 0x72, 0x5a, - 0x82, 0x97, 0x6f, 0xc8, 0x19, 0xca, 0xfd, 0x71, 0x4c, 0xd8, 0x2c, 0x9b, - 0x5b, 0xd8, 0xf3, 0xb2, 0x10, 0xc0, 0x30, 0xab, 0xd7, 0xbb, 0x21, 0x36, - 0xc3, 0x74, 0xaa, 0x08, 0xbd, 0x2a, 0x38, 0xe3, 0x8d, 0x70, 0x32, 0x93, - 0xfe, 0xe2, 0x66, 0x61, 0x3b, 0x6d, 0xfc, 0x4a, 0x98, 0x99, 0x06, 0xda, - 0xe2, 0x7a, 0x3b, 0xff, 0xfa, 0x7c, 0x10, 0x1d, 0x73, 0x4b, 0x32, 0x26, - 0xbd, 0x87, 0xa0, 0x41, 0xd1, 0x77, 0x34, 0xd9, 0x6b, 0x66, 0xe0, 0x67, - 0x39, 0xff, 0x85, 0xd6, 0xf4, 0x4b, 0x31, 0x9a, 0xe0, 0xdb, 0x6a, 0xaf, - 0xd4, 0x90, 0x45, 0xc4, 0x9d, 0xe3, 0x77, 0x3a, 0x2a, 0xc4, 0x1d, 0xdd, - 0x36, 0xf9, 0x1e, 0xb2, 0xbc, 0x02, 0xaf, 0x20, 0x6f, 0x46, 0xc4, 0x34, - 0xc1, 0xfa, 0x16, 0x2b, 0xec, 0x1f, 0x14, 0x6e, 0x60, 0x72, 0xe8, 0xf5, - 0x20, 0x0d, 0x04, 0xa4, 0xa5, 0xe4, 0xe7, 0x02, 0x6b, 0xe4, 0x5c, 0xe5, - 0x02, 0x2c, 0x90, 0x27, 0x1a, 0x86, 0x94, 0xa9, 0x03, 0x43, 0xf4, 0x8d, - 0x22, 0xa9, 0x1d, 0xd7, 0x40, 0xbc, 0xb2, 0x2f, 0x58, 0x28, 0xe6, 0xb1, - 0x10, 0x13, 0xa2, 0x2d, 0x18, 0x6c, 0xfc, 0xbf, 0xe1, 0xec, 0xb1, 0x7d, - 0xfd, 0x05, 0x02, 0x00, + 0x80, 0x61, 0x57, 0xd3, 0xb6, 0x3e, 0x2c, 0x63, 0x71, 0x23, 0xbe, 0x32, + 0xc1, 0x63, 0xe2, 0xf7, 0xaf, 0x17, 0x2b, 0xe1, 0x32, 0x43, 0x3f, 0xae, + 0x16, 0x5b, 0x35, 0x94, 0xdf, 0x97, 0xfd, 0x5a, 0x97, 0x1f, 0x8d, 0x0c, + 0xb9, 0x7f, 0x12, 0x53, 0xe0, 0xa3, 0xf3, 0xa1, 0x93, 0x87, 0x54, 0xa0, + 0x5e, 0xda, 0x52, 0x50, 0x94, 0x21, 0x14, 0x49, 0xd9, 0x9e, 0x16, 0xf6, + 0xb0, 0x72, 0x71, 0xf7, 0x32, 0x85, 0x9c, 0x8b, 0x03, 0xad, 0xc9, 0x67, + 0x41, 0xa9, 0x23, 0x41, 0x4e, 0x8a, 0x37, 0x5a, 0xd4, 0x46, 0x1f, 0x81, + 0x53, 0x48, 0x42, 0x8f, 0xb4, 0xde, 0x41, 0xa0, 0xb9, 0x8d, 0xb8, 0x2d, + 0xd9, 0x32, 0xf4, 0xf5, 0xc7, 0xd3, 0xd0, 0x7e, 0x1e, 0x28, 0x10, 0x0a, + 0x35, 0xc2, 0x91, 0xfc, 0x88, 0x80, 0x0b, 0xd6, 0xbf, 0x2d, 0xe6, 0x0c, + 0x5c, 0x97, 0x94, 0x0c, 0x9a, 0xc0, 0x74, 0xa5, 0x58, 0xbd, 0x5c, 0xf9, + 0x5c, 0xcc, 0x45, 0xfc, 0xae, 0x44, 0x4c, 0x82, 0x52, 0x2d, 0xd4, 0x8f, + 0xbe, 0x6f, 0x9a, 0xe0, 0x1d, 0x36, 0x9b, 0x53, 0x61, 0x82, 0xe1, 0x49, + 0x28, 0x41, 0xa3, 0x08, 0x8b, 0x33, 0x00, 0x36, 0xab, 0xf0, 0xe1, 0xea, + 0xe3, 0xba, 0xb0, 0x8a, 0xcd, 0xc6, 0xeb, 0x55, 0x2f, 0x55, 0x66, 0x9b, + 0x03, 0x9b, 0x33, 0x90, 0x62, 0x7c, 0x99, 0xd1, 0x7a, 0x60, 0x43, 0xad, + 0x48, 0xdd, 0x3a, 0xcb, 0xa7, 0x2b, 0xb8, 0x23, 0x2d, 0x21, 0x5a, 0x71, + 0xb7, 0x17, 0xd0, 0x01, 0x54, 0xe0, 0x06, 0xc6, 0xae, 0xab, 0xcd, 0xd4, + 0x86, 0x11, 0x77, 0x1f, 0xaf, 0x0c, 0xa3, 0x46, 0xda, 0x68, 0x25, 0xc1, + 0x5e, 0x10, 0xa2, 0x6b, 0xe5, 0xea, 0x5a, 0x4b, 0xfb, 0x5a, 0x09, 0x8f, + 0x4d, 0x0d, 0x3d, 0xdf, 0x72, 0xb1, 0x02, 0x09, 0x9d, 0x28, 0x70, 0x03, + 0xb8, 0x80, 0xfe, 0xf4, 0x68, 0x0c, 0xe1, 0xaf, 0xc4, 0x1a, 0xbe, 0x47, + 0x98, 0x90, 0x5c, 0x66, 0x6b, 0x2b, 0xcc, 0x30, 0x19, 0x19, 0x76, 0x74, + 0x0a, 0x27, 0xaa, 0x02, 0x2b, 0xda, 0x9b, 0x5a, 0xb2, 0x34, 0x4c, 0xb9, + 0xfa, 0xc8, 0x42, 0x9b, 0xa0, 0x6e, 0x57, 0x71, 0xe2, 0xb2, 0xc2, 0x79, + 0x9c, 0x9c, 0x2a, 0x48, 0x67, 0x6b, 0x6a, 0x69, 0x84, 0xd9, 0x1e, 0xb2, + 0xf0, 0x3a, 0x1a, 0x0f, 0xa8, 0x28, 0xb5, 0x0a, 0x05, 0xe5, 0x4c, 0xd3, + 0xb9, 0xe0, 0xff, 0xff, 0xea, 0xf8, 0x72, 0xab, 0x09, 0x60, 0x14, 0x4f, + 0xfc, 0xc8, 0x00, 0xe7, 0xaa, 0xe7, 0x41, 0x7c, 0xa2, 0x50, 0x15, 0x2d, + 0x81, 0x50, 0x14, 0x9d, 0xe4, 0x61, 0x31, 0x8d, 0xe7, 0x5a, 0x59, 0xb0, + 0xd6, 0xdc, 0x21, 0x2d, 0x03, 0x73, 0xb2, 0x20, 0x4c, 0x48, 0xbd, 0xee, + 0x06, 0x1b, 0xe9, 0x22, 0x3d, 0x22, 0xa4, 0xe8, 0x70, 0x8b, 0x47, 0xc7, + 0xa7, 0xc7, 0x97, 0xc7, 0x88, 0xa0, 0x6e, 0x88, 0x24, 0x53, 0x14, 0x00, + 0x2f, 0x93, 0xf1, 0xcd, 0x3c, 0xa3, 0xbb, 0x57, 0x42, 0x3a, 0xe8, 0xa6, + 0xff, 0x2e, 0x19, 0x1d, 0x1d, 0x7c, 0x2b, 0x21, 0x0d, 0x45, 0x74, 0x7e, + 0x71, 0x76, 0xfe, 0xfa, 0xe4, 0xed, 0x51, 0x2f, 0x3a, 0x3c, 0x3b, 0xff, + 0xa1, 0x17, 0xbd, 0x39, 0xfb, 0xf6, 0xb8, 0xc5, 0xa7, 0xc8, 0xfe, 0xec, + 0x66, 0xc6, 0xd9, 0xeb, 0x35, 0xbb, 0x1d, 0xa2, 0xb2, 0xea, 0x56, 0x07, + 0x89, 0x3e, 0xa7, 0x27, 0xc3, 0x4b, 0x6c, 0x7d, 0x3d, 0xde, 0x0b, 0x31, + 0xed, 0x52, 0x7c, 0x20, 0x2d, 0x2c, 0x80, 0x83, 0x2b, 0xe7, 0xfd, 0x76, + 0x54, 0xbd, 0xe2, 0xf0, 0x1e, 0x96, 0xda, 0x15, 0xfb, 0x8a, 0xff, 0x6d, + 0xc1, 0x4c, 0x8c, 0xbd, 0xe6, 0xc1, 0xfe, 0x5e, 0x2d, 0x78, 0x75, 0x23, + 0x79, 0x39, 0xf4, 0xb2, 0xe0, 0x34, 0x8d, 0x6a, 0xf2, 0x7a, 0x34, 0x59, + 0xe6, 0x4d, 0x89, 0x27, 0x8e, 0x82, 0x0e, 0x25, 0x57, 0xa9, 0x57, 0x51, + 0xda, 0xd8, 0xfb, 0x58, 0xf8, 0xa2, 0x36, 0xd4, 0x7d, 0xf0, 0x42, 0xc3, + 0xb1, 0x23, 0xa8, 0xad, 0x21, 0x02, 0x59, 0x38, 0x24, 0x9b, 0xf6, 0x2e, + 0x29, 0xf8, 0x53, 0x86, 0x3b, 0xe2, 0x9b, 0x48, 0x70, 0x88, 0x7e, 0x78, + 0x1c, 0xb9, 0x52, 0x42, 0x0c, 0x43, 0x5f, 0xbc, 0x30, 0x9f, 0xa5, 0x03, + 0x87, 0xc5, 0x65, 0x1e, 0xc3, 0x05, 0x14, 0x61, 0x4d, 0x9a, 0xda, 0x89, + 0x6a, 0x07, 0x12, 0xe4, 0x10, 0x24, 0xa0, 0x21, 0x22, 0x92, 0x6e, 0x17, + 0x39, 0x25, 0xc4, 0xf5, 0x7b, 0x92, 0x89, 0x09, 0xd8, 0x76, 0x7d, 0xaf, + 0xdf, 0x62, 0x20, 0x61, 0xc1, 0x79, 0x0d, 0x3f, 0xff, 0xf5, 0x68, 0xe2, + 0x07, 0x47, 0x13, 0xb2, 0x86, 0x2f, 0xf1, 0xc7, 0x2f, 0xa2, 0x8a, 0x00, + 0xd2, 0x4b, 0x74, 0xc2, 0x4d, 0x12, 0xdb, 0x2a, 0xe4, 0xd1, 0x6f, 0x64, + 0x35, 0x4c, 0xb6, 0xd4, 0xbc, 0x14, 0xec, 0xb6, 0xda, 0x75, 0x58, 0x2e, + 0xaa, 0x12, 0x45, 0x85, 0x22, 0x5a, 0xc4, 0x19, 0xd9, 0x62, 0x09, 0x17, + 0x4e, 0x19, 0x8e, 0x9c, 0x6f, 0x57, 0x60, 0x8d, 0x24, 0xe5, 0x6f, 0xb8, + 0x74, 0x3f, 0x73, 0xe6, 0x33, 0x3d, 0xde, 0x07, 0xf9, 0xbf, 0x9c, 0xb0, + 0xf8, 0x4c, 0x4c, 0x4f, 0xc3, 0x8b, 0xd6, 0xa2, 0xec, 0x6f, 0x11, 0x33, + 0x15, 0x0e, 0x1e, 0xab, 0xf5, 0x96, 0xc5, 0x0f, 0xce, 0x52, 0x1f, 0x31, + 0xda, 0x9f, 0xd6, 0xae, 0x61, 0x5f, 0x62, 0x69, 0x2b, 0xdc, 0x72, 0xf3, + 0x6b, 0xb5, 0x71, 0x05, 0x6f, 0xe4, 0xe3, 0x47, 0x8f, 0xbb, 0x6a, 0x4d, + 0x6b, 0x9a, 0x54, 0x5b, 0x23, 0x7f, 0xdb, 0x42, 0x6f, 0xae, 0x4c, 0x41, + 0x38, 0x0d, 0x13, 0x0a, 0x50, 0xcb, 0x08, 0x01, 0x24, 0xc4, 0xd4, 0xf0, + 0x8c, 0x84, 0x10, 0x14, 0xdc, 0x65, 0x43, 0xb9, 0x66, 0xc3, 0x9c, 0x45, + 0x44, 0x2a, 0x4a, 0x04, 0x82, 0x17, 0x3c, 0x78, 0x34, 0x8d, 0x52, 0x6d, + 0xb2, 0x06, 0xbb, 0x6a, 0x40, 0xdd, 0x2d, 0x19, 0x1c, 0x1a, 0x98, 0xe0, + 0x93, 0x24, 0x35, 0x8c, 0x5b, 0xf9, 0xec, 0xef, 0x14, 0x00, 0x53, 0x30, + 0x7a, 0xd9, 0x57, 0x4b, 0x6d, 0xf1, 0x18, 0x39, 0xe1, 0x7d, 0x4d, 0xc6, + 0xbb, 0xc0, 0xdf, 0xd6, 0x27, 0xab, 0x37, 0x58, 0xbb, 0xfc, 0x24, 0x7c, + 0xa7, 0xf6, 0x86, 0x62, 0xc7, 0xa3, 0x36, 0xda, 0x66, 0x7f, 0xcb, 0xc5, + 0x4d, 0x02, 0x52, 0x54, 0xb6, 0xb9, 0x69, 0x0f, 0x89, 0x9d, 0x65, 0xc2, + 0x45, 0xde, 0x66, 0xd3, 0x89, 0x3f, 0x4f, 0x96, 0xad, 0xc4, 0x9d, 0x6d, + 0x8b, 0xdd, 0xd3, 0x55, 0x66, 0x2d, 0x9a, 0xf2, 0x77, 0xa3, 0xb1, 0x79, + 0x72, 0x1f, 0x36, 0xe6, 0x65, 0x07, 0xd7, 0xe0, 0x6f, 0x19, 0x82, 0xce, + 0x18, 0x7c, 0xd0, 0xba, 0x8b, 0x56, 0x54, 0x5e, 0x4e, 0x71, 0x0f, 0x20, + 0xfc, 0x4c, 0x63, 0x82, 0xa0, 0x12, 0xd8, 0x98, 0xfb, 0x62, 0x2d, 0x00, + 0x89, 0x19, 0x3a, 0x69, 0x5b, 0xea, 0x75, 0xff, 0x94, 0x8e, 0xa1, 0xab, + 0xdf, 0xa3, 0xe3, 0xae, 0x56, 0x5d, 0x0e, 0x81, 0x89, 0xa5, 0x70, 0xaf, + 0xe0, 0x4b, 0xb7, 0xa5, 0xac, 0x80, 0xd4, 0x5c, 0xd7, 0x15, 0xa3, 0x77, + 0xd4, 0xe1, 0xf0, 0xf6, 0x51, 0xb1, 0xcc, 0x27, 0xcb, 0x59, 0x27, 0xcc, + 0x82, 0xd7, 0x85, 0x61, 0x06, 0x5a, 0x3f, 0x08, 0x72, 0x09, 0x51, 0xaf, + 0xcf, 0x76, 0x6a, 0x16, 0x74, 0xc3, 0x27, 0x0c, 0x10, 0x09, 0xfb, 0xbb, + 0x21, 0xfd, 0x50, 0x7b, 0x0d, 0x21, 0xb1, 0xe4, 0x7b, 0xed, 0x37, 0xdc, + 0xbc, 0x1d, 0x5a, 0x4c, 0x16, 0xc0, 0x77, 0x07, 0x3b, 0xed, 0xe2, 0x2e, + 0x47, 0xef, 0x8d, 0x13, 0x5f, 0x60, 0x3e, 0x25, 0xf5, 0x95, 0x47, 0x5b, + 0x78, 0xc9, 0x4d, 0xe2, 0x32, 0x5c, 0x2d, 0x6e, 0x3d, 0xa4, 0xf5, 0x2b, + 0xe0, 0xca, 0x55, 0xa4, 0x2e, 0x1c, 0x57, 0x40, 0x5a, 0x7a, 0x22, 0xe6, + 0xf4, 0x7d, 0x27, 0x6a, 0x06, 0xc3, 0xdb, 0x65, 0x96, 0x3b, 0x2d, 0xee, + 0x76, 0x5b, 0xcb, 0xb8, 0xd4, 0x86, 0xc6, 0x92, 0xd8, 0xe5, 0xe9, 0xd0, + 0x05, 0x08, 0xef, 0x8a, 0x08, 0xee, 0xf0, 0x4f, 0x9c, 0x3a, 0xd4, 0x38, + 0x50, 0x6a, 0x8e, 0xe1, 0x97, 0x55, 0x08, 0xf7, 0x43, 0xd8, 0xe3, 0x0b, + 0xb3, 0x98, 0xde, 0xed, 0xb5, 0x0e, 0xc1, 0xc6, 0x50, 0x19, 0x04, 0x1b, + 0x5a, 0x6c, 0x10, 0x7b, 0xcd, 0x41, 0x08, 0x0b, 0x69, 0x1f, 0x02, 0xbf, + 0xda, 0x18, 0xc2, 0x13, 0x1d, 0xc2, 0x93, 0x8f, 0x5d, 0x85, 0x70, 0x00, + 0x4f, 0x7e, 0xe9, 0x2a, 0xb4, 0x0e, 0xe1, 0x29, 0x07, 0xd4, 0x2f, 0xee, + 0x9e, 0xb6, 0x64, 0xf6, 0x98, 0x4d, 0x0c, 0xac, 0x0a, 0x68, 0x29, 0x53, + 0x29, 0x48, 0xeb, 0x5d, 0xe6, 0x5c, 0x8a, 0xd3, 0x61, 0xb7, 0x7b, 0x0f, + 0xd3, 0x49, 0xbd, 0xea, 0xa6, 0x8e, 0xd9, 0x03, 0x5f, 0x0b, 0x0a, 0xcc, + 0x95, 0xfe, 0xc2, 0x31, 0xc6, 0x7d, 0xed, 0xa1, 0x56, 0x68, 0x5d, 0x4a, + 0x45, 0xaf, 0x89, 0x75, 0x46, 0xc2, 0xa3, 0x20, 0x9a, 0x69, 0x11, 0xa9, + 0x8c, 0xdb, 0x7a, 0x6a, 0x83, 0x4a, 0x24, 0xf0, 0x34, 0x98, 0xee, 0x73, + 0x99, 0xee, 0xf3, 0xff, 0x9b, 0xa6, 0xfb, 0x7c, 0xfd, 0x74, 0x3f, 0x11, + 0xab, 0x02, 0x30, 0x43, 0xfb, 0xa3, 0x38, 0x5f, 0x8b, 0xaa, 0x6c, 0xe1, + 0x92, 0x0e, 0x60, 0xb4, 0x12, 0xf6, 0x5f, 0x08, 0x32, 0x93, 0x7c, 0x43, + 0xcd, 0xac, 0x67, 0x05, 0x15, 0x89, 0x9e, 0xa1, 0x92, 0x8a, 0x32, 0x1d, + 0x33, 0x9f, 0xe3, 0x8a, 0x40, 0x2e, 0xce, 0xf7, 0xbf, 0xb7, 0x07, 0xad, + 0x55, 0x69, 0x8f, 0x9a, 0x75, 0x63, 0x7b, 0x11, 0x30, 0x75, 0x83, 0xf2, + 0xb3, 0x01, 0xc2, 0x0d, 0xb5, 0x7b, 0xfc, 0xf6, 0xdb, 0x93, 0x8b, 0xb3, + 0xb7, 0x6f, 0x8e, 0xdf, 0xba, 0x68, 0x9b, 0x4b, 0xd4, 0xe0, 0x6c, 0xb3, + 0xa2, 0xb5, 0xd5, 0x1e, 0x12, 0xf9, 0x17, 0xa6, 0x1c, 0x4e, 0x9b, 0x5d, + 0x2c, 0xf4, 0xaf, 0x41, 0xd8, 0x5c, 0xf0, 0x90, 0x1d, 0x3f, 0x16, 0xca, + 0x16, 0xec, 0x1b, 0x98, 0x70, 0x8c, 0xdb, 0x40, 0x42, 0x8f, 0xc4, 0x7e, + 0x22, 0xa5, 0x05, 0x93, 0x87, 0x71, 0xb2, 0xb0, 0xf5, 0xf3, 0xf7, 0x89, + 0x16, 0x2f, 0x0d, 0xa2, 0xd6, 0x2a, 0x83, 0xf0, 0x9b, 0x17, 0x34, 0xf8, + 0xa3, 0x19, 0xaf, 0xf6, 0xb7, 0xb7, 0x7f, 0x02, 0x0e, 0xe0, 0xe7, 0x6a, + 0xdf, 0x6c, 0x5e, 0xc9, 0xa1, 0x21, 0xc7, 0xd7, 0xc7, 0xb1, 0x3c, 0x3f, + 0x58, 0xcc, 0x36, 0x02, 0x7f, 0xd6, 0xf0, 0x3d, 0xe9, 0xd2, 0xdf, 0xff, + 0xf0, 0x2b, 0x77, 0x31, 0xac, 0x94, 0x65, 0xf9, 0xd5, 0xbb, 0xa8, 0x68, + 0xd7, 0x07, 0xa7, 0xa7, 0xbf, 0x6a, 0x07, 0x50, 0x39, 0xbc, 0xbd, 0xb0, + 0xef, 0xec, 0x85, 0x96, 0x24, 0xd9, 0x50, 0x66, 0x2b, 0xda, 0xc9, 0xdb, + 0x33, 0x1d, 0x8d, 0x98, 0x9b, 0xfa, 0x56, 0xf1, 0x68, 0xe2, 0xaa, 0x89, + 0xa2, 0x60, 0xc5, 0xe7, 0x8d, 0x33, 0x0e, 0x54, 0xe1, 0xab, 0x00, 0xb0, + 0xd3, 0xac, 0xbe, 0x40, 0x2d, 0x43, 0x4a, 0x52, 0xe6, 0x6c, 0x8b, 0x02, + 0x91, 0x68, 0x46, 0xeb, 0x16, 0xc3, 0x30, 0x83, 0x50, 0x70, 0x48, 0x17, + 0x6a, 0x50, 0x73, 0x3a, 0x17, 0x13, 0x9d, 0xa2, 0x39, 0x97, 0x00, 0xc8, + 0x67, 0x45, 0x00, 0x43, 0xe1, 0x53, 0xf4, 0xfd, 0xc9, 0x65, 0x74, 0x78, + 0x76, 0xe4, 0x8f, 0xe8, 0xa5, 0x04, 0x72, 0xe6, 0x28, 0x1b, 0xb6, 0x9c, + 0x13, 0x13, 0x63, 0x75, 0xc1, 0x15, 0x91, 0x30, 0xd4, 0x5f, 0x8e, 0xa9, + 0x33, 0x3b, 0x11, 0x2d, 0xa8, 0x14, 0x3d, 0xcc, 0x25, 0x50, 0x6e, 0x12, + 0x58, 0x11, 0xaa, 0x20, 0xc1, 0xce, 0x54, 0xcb, 0x71, 0xd3, 0x0c, 0x9e, + 0x43, 0x2c, 0x45, 0xac, 0x0e, 0xc4, 0x5d, 0xb8, 0x7a, 0xe1, 0x5c, 0xac, + 0x49, 0x24, 0x5c, 0x1d, 0x78, 0x5d, 0x22, 0x40, 0x45, 0x93, 0x62, 0x50, + 0x39, 0x0a, 0x00, 0x68, 0xd1, 0xdd, 0x07, 0x46, 0x68, 0xc7, 0x68, 0x2a, + 0x71, 0x9f, 0xbb, 0x6a, 0xf7, 0x9f, 0x7b, 0x40, 0x0d, 0x8f, 0x51, 0x05, + 0xd3, 0x01, 0x27, 0x4a, 0x4c, 0x2c, 0xe9, 0xc8, 0x40, 0xc6, 0xac, 0x52, + 0x90, 0x94, 0xd6, 0x68, 0xec, 0xb8, 0x6b, 0xc2, 0xf5, 0xb3, 0xa7, 0xd4, + 0x2e, 0x48, 0xf2, 0x2c, 0x4f, 0x89, 0x7b, 0x29, 0xfd, 0x39, 0x38, 0xd2, + 0x4f, 0x74, 0x30, 0x17, 0xa7, 0x34, 0xf3, 0xa9, 0xd8, 0xc1, 0x35, 0xe6, + 0x1b, 0x55, 0xa2, 0xe0, 0x3d, 0x61, 0x7d, 0x57, 0x8b, 0xfe, 0xfa, 0x37, + 0x9f, 0x99, 0xb9, 0x4d, 0x49, 0xc1, 0x23, 0x79, 0x2a, 0x15, 0x88, 0x6b, + 0x57, 0x95, 0x49, 0x25, 0x54, 0x09, 0x16, 0x1b, 0xc3, 0x5d, 0x26, 0xb6, + 0xed, 0xf6, 0x2a, 0x1d, 0x81, 0xdc, 0xf8, 0xbc, 0xd6, 0x8f, 0x75, 0xc3, + 0x4d, 0x69, 0x21, 0x58, 0x74, 0x51, 0x0f, 0xb8, 0xe2, 0xe6, 0x9b, 0xad, + 0x7d, 0x5a, 0x5f, 0x14, 0x0b, 0x6c, 0x63, 0x38, 0x86, 0x2c, 0x74, 0xa2, + 0x7f, 0xe6, 0x98, 0x45, 0x74, 0x9f, 0x70, 0x4e, 0x94, 0x9e, 0x49, 0xd4, + 0xf5, 0xb2, 0xd9, 0x59, 0xfc, 0x84, 0xa4, 0x4a, 0x02, 0xe8, 0x4a, 0xe3, + 0x2d, 0xc7, 0x3a, 0xde, 0x86, 0x7e, 0x98, 0x87, 0x1c, 0xf5, 0x85, 0xef, + 0x24, 0x8a, 0xe1, 0xa2, 0x62, 0x53, 0xe7, 0x3c, 0x75, 0x9b, 0x20, 0xed, + 0xcb, 0x47, 0xec, 0xf9, 0x23, 0xce, 0x9c, 0xb9, 0xbf, 0xf5, 0x8d, 0x06, + 0x4e, 0x51, 0x2d, 0x0c, 0x8a, 0x57, 0x41, 0x2a, 0x52, 0x86, 0x75, 0x2c, + 0xad, 0x7c, 0x8b, 0x2a, 0x2e, 0x00, 0x6a, 0x67, 0x70, 0xee, 0xac, 0x11, + 0x73, 0x9a, 0x5d, 0x95, 0xae, 0x4a, 0x16, 0xab, 0xd4, 0x93, 0x00, 0xe1, + 0x12, 0xa7, 0xda, 0x37, 0x8a, 0x33, 0x64, 0xda, 0x39, 0x1c, 0x48, 0x51, + 0xc3, 0x3d, 0x17, 0x54, 0x3c, 0xf6, 0x67, 0x62, 0xb7, 0xb6, 0xd8, 0xe7, + 0x07, 0xc3, 0xa1, 0x2d, 0x35, 0x50, 0xa4, 0x6c, 0x3d, 0x65, 0x05, 0xd5, + 0xb3, 0x89, 0x8c, 0x69, 0x4d, 0x29, 0x6c, 0x31, 0x64, 0x68, 0x23, 0xb5, + 0xe8, 0x88, 0xdd, 0x27, 0x7e, 0xcd, 0x5d, 0x67, 0xdf, 0x4a, 0x6b, 0xbd, + 0x8f, 0xec, 0xac, 0xb5, 0xaf, 0x6f, 0x5b, 0xfa, 0x7a, 0x5a, 0x9b, 0xd7, + 0xde, 0xde, 0xa7, 0x9a, 0x42, 0x40, 0x6b, 0x7d, 0x58, 0xa1, 0x14, 0x25, + 0x0e, 0xb5, 0x35, 0xd0, 0x83, 0x7d, 0x43, 0x8b, 0x48, 0x5a, 0x2b, 0xc6, + 0x63, 0x30, 0x41, 0x57, 0xcf, 0xfc, 0xb4, 0x48, 0xaa, 0xe0, 0xf6, 0xd8, + 0xec, 0x21, 0xc7, 0xa4, 0x71, 0x7a, 0x5c, 0x39, 0xa0, 0x13, 0x1e, 0x19, + 0xf1, 0xf1, 0x35, 0xf1, 0x26, 0x36, 0x8c, 0xa0, 0x9f, 0x4f, 0x5d, 0x3f, + 0x6e, 0xe4, 0xac, 0x87, 0x4a, 0x5e, 0xfd, 0x20, 0xe4, 0x08, 0x4a, 0x23, + 0x41, 0x44, 0x9a, 0x3a, 0x0a, 0x5a, 0xca, 0x2a, 0xc9, 0xdb, 0xbe, 0x17, + 0x39, 0x7e, 0xe7, 0x5a, 0x0c, 0x52, 0x40, 0x55, 0x50, 0x22, 0x2f, 0xae, + 0x20, 0x94, 0xc0, 0x62, 0xc3, 0xc7, 0xdd, 0xfa, 0xc8, 0xc3, 0xd3, 0xbe, + 0xfb, 0x22, 0x58, 0x13, 0x1b, 0x96, 0xd9, 0x1a, 0xb7, 0xed, 0xf8, 0x38, + 0x16, 0x22, 0xd2, 0x1d, 0xff, 0x7d, 0x71, 0x7c, 0x79, 0xc1, 0x31, 0xad, + 0x80, 0x59, 0xa9, 0x6b, 0xca, 0x74, 0xa6, 0xb6, 0x9c, 0x59, 0x5e, 0x0a, + 0x75, 0x04, 0x5c, 0xd7, 0x53, 0xb2, 0x14, 0xe4, 0xc6, 0x3d, 0xc3, 0x99, + 0xd7, 0x95, 0xfa, 0xdc, 0xbe, 0x4a, 0x90, 0xdc, 0x43, 0x3e, 0x42, 0x53, + 0x4f, 0x86, 0x5b, 0x7f, 0x1f, 0xe7, 0x03, 0x34, 0x45, 0x61, 0x6b, 0x1a, + 0x0a, 0x3f, 0x50, 0xd7, 0xbb, 0x8b, 0x4a, 0x91, 0x94, 0xa7, 0xd8, 0x3c, + 0xc4, 0x1a, 0x50, 0xde, 0x30, 0x12, 0xb9, 0xce, 0xe9, 0x9a, 0x94, 0xc4, + 0x55, 0xbb, 0x0e, 0x9d, 0x37, 0x50, 0xba, 0x94, 0x4f, 0x11, 0xa6, 0x0e, + 0xb4, 0xad, 0xe8, 0xe9, 0xce, 0x4e, 0xb3, 0xb9, 0x78, 0x94, 0xdd, 0x99, + 0x6b, 0x52, 0x93, 0x3e, 0xa4, 0xb4, 0x0f, 0xf6, 0x0b, 0x97, 0x29, 0x74, + 0x8d, 0xfe, 0x15, 0xc9, 0xcc, 0xbc, 0x60, 0x66, 0x46, 0x08, 0x96, 0x4d, + 0x0e, 0xe5, 0x77, 0x48, 0x42, 0xd1, 0x25, 0xab, 0x1e, 0x45, 0xc9, 0x4f, + 0x31, 0x2c, 0xc1, 0xd8, 0xea, 0x7a, 0x22, 0x91, 0x6d, 0x45, 0xb3, 0x9f, + 0xb5, 0xcc, 0x53, 0x41, 0x72, 0x82, 0x6e, 0x9e, 0xb5, 0x10, 0x44, 0x34, + 0xbc, 0x3c, 0xbb, 0x88, 0x82, 0xaa, 0xdc, 0x55, 0xae, 0x8b, 0x78, 0x06, + 0x7e, 0xc2, 0x79, 0x67, 0x7b, 0x2d, 0xae, 0x03, 0x97, 0x24, 0x29, 0x41, + 0x47, 0x9c, 0x6d, 0xef, 0x7b, 0x7d, 0xee, 0x1d, 0x5d, 0x3a, 0xb7, 0x6f, + 0x49, 0x03, 0xe0, 0xac, 0x41, 0x83, 0x3b, 0xa3, 0xfb, 0x91, 0x04, 0xef, + 0x59, 0x60, 0x7f, 0xd9, 0x93, 0x73, 0x76, 0xb6, 0x04, 0xad, 0x4b, 0xbe, + 0x23, 0x93, 0x91, 0x66, 0x3e, 0xb2, 0xd9, 0x4a, 0x0d, 0x53, 0xce, 0x18, + 0x58, 0x27, 0x45, 0x39, 0x43, 0x67, 0x1e, 0xd0, 0x4e, 0x2c, 0xff, 0x83, + 0x9a, 0xd7, 0x0f, 0x9f, 0x23, 0x93, 0x4d, 0xdd, 0x28, 0x4a, 0x42, 0x5a, + 0xbb, 0xa3, 0xbe, 0xd9, 0x63, 0x12, 0x05, 0x26, 0x5a, 0xc7, 0x5a, 0xc2, + 0xad, 0x9c, 0x6c, 0xe4, 0xc5, 0x8a, 0x1d, 0xbf, 0xce, 0xe7, 0x67, 0x17, + 0x97, 0x56, 0xd0, 0x46, 0xef, 0x4d, 0x7c, 0x54, 0x3b, 0x41, 0xec, 0xac, + 0x87, 0x04, 0xe8, 0x23, 0x55, 0x1a, 0x52, 0x6d, 0x50, 0x2c, 0x51, 0x5a, + 0xd5, 0x36, 0xb8, 0x10, 0x46, 0xbe, 0x32, 0xcf, 0x97, 0x2b, 0x97, 0x03, + 0x96, 0xa3, 0xa9, 0x3c, 0xcc, 0x9f, 0xdb, 0xfd, 0x98, 0x3e, 0x09, 0xf4, + 0xc9, 0x6e, 0x0b, 0x75, 0xb0, 0x00, 0x7e, 0x71, 0x3c, 0xbc, 0x94, 0x55, + 0xe3, 0xdf, 0x1a, 0x23, 0x97, 0x54, 0x48, 0xfd, 0xb0, 0xd5, 0xb1, 0x04, + 0xea, 0xe0, 0x10, 0x99, 0x99, 0xd6, 0x5a, 0x74, 0xde, 0xa0, 0x60, 0xcd, + 0x9e, 0x04, 0x21, 0x7d, 0x60, 0x9c, 0x4a, 0x2b, 0x97, 0x56, 0x7b, 0x33, + 0xea, 0x68, 0x27, 0x1d, 0xba, 0x72, 0xe5, 0x50, 0x64, 0xf9, 0x6d, 0xd0, + 0xc2, 0xd3, 0x80, 0x59, 0x30, 0x73, 0xd7, 0x06, 0x4e, 0xcc, 0x32, 0xce, + 0x1f, 0x3a, 0xe7, 0xf3, 0x75, 0x32, 0x37, 0xc2, 0x90, 0xe7, 0x7c, 0x3b, + 0xcf, 0x5c, 0x5e, 0xb4, 0x89, 0x47, 0xc1, 0x50, 0xf8, 0x63, 0x8b, 0x86, + 0x87, 0xa3, 0xb1, 0x46, 0x76, 0x4f, 0x9e, 0xbb, 0x55, 0x64, 0xd1, 0xd9, + 0xb9, 0x76, 0x64, 0xfa, 0xc1, 0x5d, 0xc4, 0xae, 0xb1, 0x74, 0xbe, 0x4c, + 0xb4, 0x68, 0x47, 0x9c, 0x4f, 0x53, 0x84, 0xb2, 0x8a, 0x6f, 0xa6, 0x61, + 0x88, 0xd6, 0x08, 0x43, 0xdf, 0x8f, 0x5e, 0x44, 0xa4, 0xc6, 0xfb, 0xdd, + 0x92, 0x64, 0x43, 0x9c, 0x64, 0x2f, 0xe3, 0xd1, 0xc1, 0x9d, 0xbb, 0xdb, + 0x62, 0x10, 0x9d, 0x33, 0x96, 0x2b, 0x4c, 0xec, 0xc5, 0x7f, 0xf8, 0xd6, + 0xe4, 0xb0, 0x30, 0xc6, 0x38, 0x5f, 0x9f, 0x10, 0x4e, 0x53, 0x2e, 0x44, + 0x8f, 0x4f, 0xf8, 0xd7, 0x00, 0x19, 0xb2, 0x31, 0xe5, 0x17, 0xfe, 0xe5, + 0x82, 0x26, 0x42, 0xba, 0x49, 0xfd, 0x91, 0xa7, 0x4a, 0x5b, 0xa4, 0xb8, + 0xa0, 0x09, 0xee, 0x00, 0xec, 0x99, 0xcf, 0x34, 0x6f, 0x49, 0xca, 0xf1, + 0x8d, 0x68, 0xe1, 0xca, 0x9e, 0x31, 0x31, 0x56, 0x9e, 0xf3, 0x4d, 0xc9, + 0x9d, 0x70, 0x20, 0xeb, 0x04, 0xa0, 0x0b, 0x3a, 0x37, 0x5c, 0x2e, 0x89, + 0xda, 0x9a, 0x33, 0xc3, 0x9d, 0x9a, 0xef, 0xdc, 0x67, 0x7b, 0x31, 0xcf, + 0x1c, 0xd9, 0xe1, 0xe1, 0x99, 0x34, 0xc1, 0xab, 0x2b, 0xde, 0xc0, 0xa7, + 0x42, 0x8d, 0x8e, 0x74, 0xdc, 0x35, 0x56, 0x19, 0x1d, 0x77, 0xec, 0x32, + 0x48, 0xb1, 0xdd, 0xac, 0x5a, 0xa2, 0x14, 0x4c, 0xd0, 0xd4, 0x33, 0xdf, + 0xd4, 0x15, 0x67, 0xfe, 0xb9, 0xb6, 0x3c, 0x0f, 0xf2, 0x50, 0x6c, 0xa9, + 0x7b, 0x4c, 0xf5, 0x04, 0xb9, 0xca, 0x1a, 0x9a, 0x42, 0xf5, 0xfe, 0x78, + 0x2a, 0xc4, 0x70, 0x99, 0x65, 0x52, 0x0c, 0xd0, 0xc5, 0xfa, 0x0d, 0x24, + 0x8a, 0xb0, 0x69, 0x76, 0x2f, 0x7a, 0xaa, 0x5e, 0x69, 0xc5, 0x32, 0xf6, + 0x1a, 0x34, 0xea, 0x4d, 0x2f, 0x67, 0x8d, 0x72, 0x39, 0x4f, 0x3f, 0x53, + 0xf5, 0xed, 0x76, 0x4e, 0x24, 0x19, 0x5d, 0x1e, 0x9f, 0xbe, 0x3d, 0xbe, + 0x74, 0x80, 0x1d, 0x36, 0xa1, 0xe0, 0xf9, 0x17, 0x6a, 0xd8, 0x52, 0xed, + 0xca, 0x70, 0x89, 0xeb, 0xee, 0xd7, 0x67, 0xbb, 0xce, 0xb6, 0xc3, 0x91, + 0x73, 0xdd, 0x42, 0xce, 0x5f, 0x10, 0x3f, 0x87, 0x52, 0xdd, 0x5f, 0x47, + 0x6f, 0x8e, 0x9e, 0x71, 0x30, 0xff, 0x75, 0x92, 0x33, 0x32, 0xba, 0x57, + 0x76, 0xb2, 0x80, 0x13, 0x3c, 0xdb, 0x0b, 0xf0, 0x24, 0xe4, 0x32, 0x4b, + 0xf5, 0x7c, 0xb0, 0x18, 0x4b, 0x2b, 0xc4, 0xf9, 0xa7, 0xa4, 0xa8, 0x8a, + 0x35, 0x10, 0x9a, 0xb5, 0x58, 0x19, 0x15, 0x3b, 0x44, 0x64, 0x83, 0x7a, + 0xcd, 0xf0, 0x2a, 0x9b, 0x78, 0xf6, 0xc4, 0xb3, 0x89, 0x7c, 0xb5, 0x60, + 0xd4, 0x33, 0x29, 0x2a, 0xde, 0x42, 0xb3, 0xcf, 0x84, 0x35, 0x1d, 0xca, + 0xc9, 0x62, 0x79, 0xb1, 0xf9, 0x1a, 0x87, 0x24, 0x89, 0xb9, 0x2d, 0x78, + 0xef, 0x59, 0xa8, 0xaf, 0x15, 0x5a, 0x4d, 0x98, 0xd6, 0x0f, 0x25, 0x03, + 0x50, 0x01, 0xdd, 0x3f, 0xfb, 0xdc, 0x3d, 0xcb, 0x35, 0x55, 0xd3, 0xb9, + 0x82, 0xd1, 0x3c, 0xf2, 0x86, 0x4a, 0x99, 0x72, 0xf9, 0xfa, 0x18, 0x19, + 0x91, 0x2d, 0x82, 0xb5, 0x0f, 0x5e, 0x79, 0x51, 0x55, 0x47, 0x81, 0x73, + 0xea, 0x6b, 0x5c, 0xf0, 0xa4, 0xd2, 0xc5, 0x4d, 0x48, 0xfe, 0xcf, 0xe5, + 0x2e, 0x3c, 0xe7, 0x70, 0xc8, 0xca, 0x7e, 0x1a, 0x9b, 0xa9, 0xa0, 0x00, + 0xd8, 0x69, 0x12, 0xea, 0x3a, 0x3c, 0xb0, 0x37, 0xea, 0xa4, 0xc9, 0x8f, + 0x06, 0x97, 0xc7, 0xf3, 0x5d, 0xa5, 0x4a, 0x9a, 0x72, 0x76, 0x3d, 0x27, + 0x1d, 0x7f, 0xd2, 0x2c, 0x8d, 0x1b, 0x3c, 0xbe, 0xa7, 0x47, 0x52, 0xaa, + 0x4a, 0x83, 0xed, 0x30, 0xfe, 0xb0, 0x7f, 0xe0, 0x89, 0x52, 0xad, 0xb8, + 0xd2, 0x20, 0x66, 0x03, 0xf8, 0x99, 0x6d, 0x88, 0x49, 0x25, 0xb4, 0xfe, + 0xf9, 0x53, 0x95, 0x6e, 0x4c, 0x0a, 0x65, 0xce, 0xcf, 0x0b, 0x31, 0x65, + 0xb0, 0x85, 0x06, 0x23, 0x7c, 0xae, 0x97, 0x8b, 0x6e, 0x65, 0x69, 0xe5, + 0xeb, 0x95, 0x07, 0x16, 0x88, 0xab, 0xbd, 0x4f, 0xe7, 0x1a, 0xff, 0xdd, + 0x78, 0xfd, 0xf9, 0x1a, 0xab, 0x86, 0xfa, 0x22, 0x8e, 0x41, 0x4b, 0xc1, + 0xf3, 0x9f, 0xba, 0x93, 0xe0, 0x40, 0xba, 0x7a, 0x2e, 0xce, 0x0b, 0x5e, + 0x6d, 0x83, 0x52, 0xb4, 0x83, 0x04, 0xbd, 0x7a, 0xe1, 0xab, 0x62, 0xb4, + 0xb9, 0xf2, 0x5c, 0xf7, 0xa4, 0x93, 0x47, 0x69, 0x70, 0x8c, 0x9f, 0x0b, + 0x49, 0xbd, 0x86, 0x27, 0xd9, 0xce, 0x01, 0x87, 0xe3, 0x86, 0x28, 0xd7, + 0xfe, 0xe9, 0x17, 0x4a, 0x1b, 0x76, 0x23, 0x99, 0x20, 0xb8, 0xf6, 0x8d, + 0x4f, 0x77, 0x42, 0xb1, 0x70, 0xc2, 0xb6, 0x34, 0x49, 0xa7, 0x5e, 0xfb, + 0x82, 0x50, 0xc6, 0x09, 0x31, 0xea, 0x6b, 0x22, 0x6a, 0x3c, 0xe3, 0x61, + 0x04, 0xfc, 0x63, 0x7b, 0x55, 0xb6, 0x16, 0x0a, 0x29, 0xd1, 0xc9, 0x51, + 0xf0, 0xe0, 0x13, 0x3f, 0xc1, 0x78, 0xca, 0xf7, 0xed, 0x4a, 0x34, 0xfd, + 0x42, 0x81, 0xc6, 0x83, 0x47, 0x9f, 0x6a, 0x14, 0x26, 0xc7, 0xdf, 0xde, + 0xc8, 0xfa, 0x37, 0x9e, 0x11, 0x72, 0x38, 0x74, 0xc5, 0xc7, 0x25, 0x9c, + 0xb2, 0x68, 0xbb, 0x66, 0x3f, 0x7d, 0xfe, 0xc8, 0xb3, 0x7a, 0x2d, 0x15, + 0xee, 0x32, 0x0d, 0xde, 0xfb, 0xb4, 0x79, 0xcc, 0x4d, 0xf0, 0xb6, 0x68, + 0x65, 0x3d, 0x69, 0xd1, 0x26, 0x07, 0x5f, 0xff, 0x87, 0x99, 0x56, 0x72, + 0x8e, 0xc2, 0x2c, 0xfe, 0x23, 0x1c, 0xef, 0x67, 0x61, 0xc8, 0xb3, 0xd8, + 0x55, 0x5c, 0x4d, 0x86, 0x10, 0x1a, 0xd7, 0x57, 0x37, 0xc1, 0xea, 0x04, + 0x2d, 0xc8, 0x9e, 0xd3, 0x4d, 0x1d, 0xd4, 0x4a, 0x57, 0x4d, 0x4b, 0x53, + 0xd4, 0x2d, 0xe2, 0x49, 0x47, 0xf7, 0x35, 0x6d, 0x2a, 0xa8, 0x23, 0xb0, + 0x4e, 0xed, 0xd4, 0x8e, 0x41, 0x71, 0xb3, 0x14, 0xd5, 0xd6, 0xcd, 0x48, + 0x45, 0xb7, 0xea, 0x6b, 0x7b, 0x9e, 0x7b, 0xe9, 0xc5, 0x2a, 0x79, 0x18, + 0x87, 0x0c, 0xff, 0x2b, 0xfa, 0x6f, 0x04, 0x52, 0xe4, 0xab, 0x98, 0x06, + 0x84, 0x5a, 0x31, 0x06, 0x7a, 0xb0, 0x19, 0xb7, 0x27, 0x66, 0x69, 0x1c, + 0x75, 0xd0, 0x8d, 0x0a, 0x0f, 0xec, 0xc0, 0xa5, 0x5d, 0xba, 0x49, 0xc6, + 0xb7, 0x76, 0x64, 0x5c, 0x1b, 0x2d, 0x6f, 0x3d, 0x75, 0x4b, 0xcb, 0xd4, + 0x77, 0x4e, 0x4a, 0x78, 0x4d, 0xd4, 0xf6, 0x8f, 0x0a, 0xd5, 0x5c, 0x5c, + 0x0e, 0xcf, 0xf7, 0x79, 0xbc, 0x12, 0x07, 0x42, 0x07, 0xe2, 0x70, 0x98, + 0xfc, 0xcd, 0x0a, 0xa1, 0xfb, 0xa7, 0x9f, 0xaf, 0x79, 0x7a, 0xa8, 0x91, + 0x16, 0x27, 0x13, 0xe6, 0xbe, 0xb4, 0x0f, 0xe1, 0x4b, 0x9f, 0x6a, 0x3e, + 0x17, 0x3c, 0x22, 0x8c, 0xf7, 0x07, 0xeb, 0x0c, 0x8f, 0xcc, 0x85, 0xd6, + 0xf9, 0x87, 0x3f, 0xf3, 0x46, 0x91, 0x9b, 0xe5, 0xfc, 0xd6, 0x49, 0x64, + 0x0a, 0x7e, 0x64, 0x1b, 0xec, 0x5e, 0xf8, 0xfe, 0x7b, 0xe1, 0xaf, 0x0e, + 0xde, 0x46, 0x2d, 0xc5, 0x0e, 0xbc, 0x9d, 0xf8, 0x91, 0x40, 0xa6, 0x33, + 0x69, 0xa3, 0x78, 0x7d, 0x9e, 0x4c, 0x13, 0x06, 0x49, 0x13, 0x29, 0x1c, + 0x44, 0xd5, 0x16, 0xe8, 0xc9, 0xd1, 0x2f, 0x52, 0x76, 0x28, 0x51, 0x20, + 0xbd, 0x39, 0xfb, 0xea, 0xd5, 0x18, 0x43, 0xab, 0x7d, 0xf0, 0xee, 0xf2, + 0xeb, 0xb3, 0x8b, 0x61, 0xb4, 0xcd, 0x39, 0xe1, 0x97, 0x17, 0x27, 0x5f, + 0xbe, 0x23, 0xe5, 0xd6, 0x59, 0xd9, 0x8f, 0x62, 0x52, 0x7a, 0xa7, 0x1c, + 0x96, 0x92, 0xcc, 0x69, 0x11, 0xaf, 0x0d, 0x64, 0x1d, 0x28, 0x2e, 0x7c, + 0x4f, 0x65, 0xb9, 0xaf, 0x48, 0x22, 0x85, 0xef, 0xcd, 0x8b, 0x80, 0x50, + 0xb7, 0x94, 0xbe, 0xcb, 0xbc, 0xe6, 0x96, 0x56, 0xf3, 0xfc, 0x23, 0xf3, + 0x3d, 0x44, 0x97, 0x5f, 0x1f, 0xbc, 0xfd, 0x66, 0x68, 0x48, 0x7e, 0xdf, + 0x7d, 0xf7, 0x5d, 0xe8, 0x64, 0xda, 0xdf, 0xde, 0x06, 0x76, 0xdb, 0x4d, + 0xfc, 0xf0, 0x30, 0x28, 0x92, 0x8d, 0x0d, 0x5a, 0xd8, 0x0d, 0x9f, 0x37, + 0xa1, 0xf0, 0xce, 0xc5, 0x92, 0x6e, 0x75, 0xfa, 0x7a, 0x7b, 0xb1, 0x1c, + 0x31, 0x9c, 0xf4, 0xf6, 0xb2, 0xd4, 0xe2, 0x19, 0x78, 0x7b, 0x7b, 0x63, + 0x63, 0x78, 0x7c, 0x1c, 0x1d, 0x9c, 0x0e, 0xcf, 0x82, 0x77, 0x37, 0x77, + 0xb7, 0x48, 0xea, 0xb9, 0x4e, 0x4a, 0xfa, 0x65, 0x63, 0xe3, 0xf4, 0xe0, + 0x92, 0x15, 0xba, 0x6f, 0x8f, 0x2f, 0x86, 0x27, 0x67, 0x6f, 0x79, 0x77, + 0x18, 0xf4, 0x22, 0x9e, 0xde, 0x33, 0xce, 0xd8, 0x55, 0x8a, 0x9c, 0xd4, + 0x7b, 0x2b, 0x5b, 0xc1, 0x40, 0x2e, 0x24, 0x96, 0x89, 0x9c, 0x2a, 0x4e, + 0x34, 0xab, 0x69, 0x24, 0xf1, 0x0f, 0x25, 0xab, 0x55, 0xe6, 0x69, 0xdd, + 0x88, 0xbc, 0x51, 0x47, 0x60, 0xed, 0x93, 0x91, 0x84, 0x07, 0xf5, 0x04, + 0x6d, 0x01, 0x81, 0xf9, 0x01, 0x1c, 0x44, 0xeb, 0xc4, 0x87, 0x27, 0x6f, + 0xce, 0x49, 0xbf, 0x79, 0x37, 0x3c, 0xf8, 0xea, 0x98, 0x1f, 0xfd, 0x2a, + 0x29, 0xfd, 0x76, 0x48, 0x79, 0x0d, 0xee, 0xe4, 0x6d, 0x52, 0x16, 0xe3, + 0x78, 0xc1, 0x31, 0xf6, 0xd4, 0x4d, 0x5f, 0xee, 0x80, 0xa0, 0x6d, 0x91, + 0x74, 0x3d, 0xf0, 0xf6, 0x5c, 0x9f, 0x07, 0x2a, 0x76, 0xd8, 0xee, 0xc5, + 0xf1, 0xc1, 0xd1, 0x9b, 0x63, 0x0b, 0x1e, 0x93, 0x3b, 0x93, 0x1a, 0xbd, + 0xc9, 0xb8, 0x52, 0x8f, 0x33, 0xf3, 0xf2, 0xbd, 0xcc, 0x8b, 0x4f, 0xdf, + 0x70, 0xf9, 0x89, 0xf6, 0xee, 0xfc, 0x46, 0xe1, 0xd9, 0xc1, 0x55, 0xba, + 0x2d, 0xad, 0x5b, 0x7f, 0xb1, 0x5b, 0x12, 0x8b, 0xc2, 0x52, 0x59, 0x55, + 0x54, 0x76, 0xa8, 0xfa, 0x9f, 0xed, 0xec, 0xec, 0x3c, 0x32, 0x0f, 0x18, + 0x55, 0xf5, 0xc6, 0xa3, 0xa9, 0xec, 0xf3, 0xe3, 0xdb, 0xbe, 0x7d, 0xa3, + 0xcc, 0xd0, 0x44, 0xcd, 0x7f, 0xce, 0xc5, 0xc8, 0x90, 0x96, 0x49, 0xfb, + 0xa0, 0xc7, 0x59, 0xe6, 0xf6, 0xa0, 0xb2, 0x3c, 0x13, 0xc6, 0xf4, 0x49, + 0xcb, 0x00, 0x13, 0xce, 0x86, 0x3e, 0x49, 0xc1, 0x6a, 0xe3, 0x7c, 0x55, + 0x6f, 0x92, 0xbf, 0xa1, 0x36, 0xf9, 0xc7, 0x20, 0xcb, 0xaf, 0xb7, 0x67, + 0xfb, 0x10, 0x28, 0xe8, 0xa1, 0xd7, 0x09, 0x6a, 0x1c, 0xdd, 0x67, 0x2e, + 0xcc, 0xaa, 0xe0, 0xa5, 0xe5, 0x88, 0xce, 0x8f, 0x18, 0xd7, 0x2f, 0x58, + 0x07, 0x6c, 0x27, 0xd7, 0xd2, 0x95, 0x99, 0x5b, 0xe8, 0x49, 0x4b, 0x27, + 0x05, 0x6f, 0x19, 0x9b, 0xd4, 0x06, 0xc4, 0x42, 0xa8, 0x17, 0xfa, 0x5c, + 0x88, 0x84, 0x7e, 0xcd, 0x89, 0x68, 0x06, 0xe5, 0x03, 0xb8, 0x5e, 0x96, + 0x3b, 0x2c, 0x4c, 0x40, 0x74, 0x11, 0xcb, 0xca, 0x33, 0xd2, 0x47, 0x62, + 0x49, 0x35, 0x1a, 0x22, 0x84, 0x3f, 0x88, 0xbc, 0x43, 0x58, 0x3f, 0x37, + 0x5c, 0xef, 0xb3, 0xdf, 0x07, 0x05, 0x15, 0x8e, 0x5e, 0x3e, 0xa2, 0xf3, + 0x60, 0x52, 0xb2, 0xfa, 0x73, 0xbd, 0x24, 0x03, 0xea, 0x19, 0xd2, 0x28, + 0x1a, 0x7d, 0x01, 0x50, 0x2a, 0x47, 0x80, 0x5f, 0x21, 0xdd, 0xa1, 0x40, + 0xcf, 0x20, 0x91, 0xa2, 0x5c, 0xe8, 0x8b, 0xf6, 0x64, 0x1b, 0x91, 0x47, + 0x1f, 0xdd, 0xd3, 0xe1, 0xb9, 0xab, 0xf7, 0x43, 0x2b, 0x70, 0xc7, 0x4b, + 0x70, 0x9b, 0x60, 0xf6, 0xa1, 0x5c, 0xff, 0xc8, 0x60, 0xf6, 0x69, 0x15, + 0xf8, 0x8d, 0xff, 0xde, 0x1e, 0x14, 0xc5, 0xcd, 0x76, 0x3a, 0x79, 0x3f, + 0x29, 0x62, 0xfa, 0x8c, 0xf8, 0x5a, 0xe3, 0xe3, 0x01, 0x7d, 0x18, 0xfd, + 0xa5, 0xc2, 0xf7, 0x8b, 0x71, 0xfb, 0x4c, 0xfe, 0x7b, 0x9b, 0x81, 0xce, + 0x00, 0xc6, 0x1c, 0x2c, 0x5c, 0x0b, 0xf7, 0xa0, 0x59, 0x09, 0xa6, 0x1e, + 0x1d, 0xc7, 0x76, 0xca, 0xe8, 0x5f, 0x47, 0x1d, 0x25, 0xb7, 0x1f, 0xf7, + 0x76, 0x76, 0x76, 0xf7, 0x77, 0x3f, 0x7b, 0xb1, 0xb3, 0xbf, 0xbb, 0xbb, + 0xbb, 0xb7, 0xbf, 0xbb, 0xbf, 0xbf, 0xb7, 0xf3, 0xd3, 0x76, 0x67, 0x63, + 0xe3, 0xe8, 0xec, 0xbb, 0xb7, 0xa7, 0x67, 0x07, 0x47, 0xd1, 0xe5, 0x19, + 0xe9, 0xf6, 0x6c, 0x97, 0x69, 0x39, 0xe9, 0x40, 0xb8, 0x2a, 0x33, 0xb9, + 0xd9, 0xe2, 0xa0, 0x1c, 0x49, 0xa3, 0xcb, 0x0c, 0x0a, 0x00, 0xbf, 0x34, + 0xb8, 0x29, 0x67, 0x1f, 0x66, 0x5f, 0x1f, 0xd3, 0x49, 0x4f, 0x22, 0xe0, + 0xbc, 0x8e, 0x87, 0xad, 0x35, 0x22, 0x55, 0xd8, 0x56, 0x57, 0x60, 0x1d, + 0x0e, 0x45, 0x17, 0x01, 0xb9, 0x29, 0x6e, 0x78, 0x1f, 0x23, 0x2a, 0x85, + 0x58, 0x8a, 0x6a, 0xf0, 0x86, 0x2b, 0x8c, 0xa0, 0x3e, 0x5a, 0x29, 0x42, + 0x4f, 0xd2, 0xcb, 0x56, 0x63, 0x82, 0x67, 0x6b, 0xa7, 0x44, 0x17, 0x4f, + 0xf2, 0x80, 0x59, 0x57, 0xd9, 0x84, 0xa0, 0xb6, 0xf9, 0xd9, 0x01, 0xad, + 0xc9, 0xb4, 0xd6, 0x34, 0xb7, 0x21, 0xc3, 0x55, 0xdf, 0xd2, 0x1d, 0xf7, + 0x63, 0xdc, 0xc3, 0x77, 0xc1, 0xdf, 0x84, 0x97, 0xce, 0xb6, 0x33, 0xb5, + 0xc9, 0x00, 0xde, 0x0d, 0x4f, 0xde, 0x7e, 0x05, 0x5f, 0xda, 0x77, 0x67, + 0x17, 0x47, 0x43, 0x6a, 0x96, 0x6f, 0xe3, 0x0d, 0x58, 0x5b, 0xf8, 0xd0, + 0xea, 0xa8, 0xe4, 0x08, 0x70, 0xd7, 0x7f, 0x82, 0x76, 0x35, 0xe9, 0xb9, + 0x34, 0x0b, 0x0c, 0x33, 0x90, 0x8c, 0x39, 0x7d, 0xa2, 0x9d, 0xc1, 0xe1, + 0x34, 0xc8, 0xeb, 0x5f, 0xcc, 0x62, 0x06, 0xbe, 0x4d, 0x06, 0x82, 0x20, + 0x87, 0xa8, 0x89, 0x6d, 0x86, 0x90, 0xd9, 0x66, 0x09, 0x7d, 0xbb, 0xcc, + 0xc0, 0x2a, 0xd0, 0x4a, 0x96, 0x3b, 0xb0, 0xe0, 0xca, 0x8a, 0xf0, 0x19, + 0xbb, 0x9a, 0xc6, 0xd7, 0xe8, 0xb0, 0x79, 0xfc, 0x82, 0xce, 0xb4, 0xfb, + 0x8f, 0xed, 0x12, 0xf5, 0x09, 0xb9, 0xbd, 0x13, 0x10, 0x00, 0x32, 0xfb, + 0x91, 0x13, 0xa2, 0x4e, 0x00, 0x91, 0x90, 0x50, 0x4f, 0x87, 0xc3, 0x09, + 0xb8, 0xe8, 0x47, 0x1d, 0xd5, 0x58, 0x8b, 0x71, 0x6e, 0x88, 0x01, 0xa5, + 0x1f, 0xa4, 0x80, 0x89, 0x16, 0x83, 0xaa, 0x79, 0xde, 0x58, 0x50, 0x20, + 0xf6, 0x1f, 0x7d, 0x22, 0xa9, 0x0d, 0xba, 0xb1, 0x2c, 0x39, 0x0f, 0x86, + 0xc6, 0x1e, 0x49, 0xf4, 0x0f, 0xe7, 0x39, 0xa9, 0xc8, 0xd6, 0x61, 0x48, + 0xe9, 0x74, 0x9c, 0x96, 0x1d, 0x4b, 0xa8, 0xf2, 0x20, 0x63, 0xde, 0xd9, + 0x57, 0x94, 0x34, 0x94, 0x98, 0x6e, 0x0f, 0xad, 0xb0, 0xa2, 0x09, 0xc6, + 0x24, 0x77, 0x4b, 0xe6, 0x69, 0x87, 0x93, 0x6d, 0x7c, 0x2b, 0xa9, 0xe6, + 0x8d, 0xb9, 0x1a, 0x22, 0xcc, 0x67, 0xb9, 0x77, 0x49, 0x75, 0x91, 0xcc, + 0x03, 0x63, 0xe9, 0xde, 0xc6, 0xc5, 0xec, 0x98, 0x24, 0x4e, 0xe2, 0x95, + 0x42, 0x39, 0x9a, 0xbf, 0x10, 0x54, 0x31, 0xa8, 0x2c, 0x5b, 0x58, 0xa9, + 0xa5, 0xc1, 0x55, 0xab, 0x69, 0x30, 0x1b, 0x08, 0x7a, 0x76, 0x89, 0x5b, + 0xc1, 0xf2, 0x68, 0xf1, 0x40, 0xf7, 0x2a, 0xef, 0x45, 0x5a, 0x16, 0xc9, + 0xf4, 0x4a, 0x0b, 0xee, 0x69, 0x8d, 0xbb, 0xd1, 0x2a, 0x68, 0x40, 0x26, + 0x21, 0xb1, 0xce, 0xcb, 0xb9, 0xcb, 0xfe, 0xc9, 0x94, 0x67, 0x5c, 0x83, + 0x71, 0x2a, 0x5a, 0x79, 0x95, 0x51, 0x88, 0x17, 0x6a, 0x60, 0x70, 0xbe, + 0x1b, 0x91, 0x03, 0x23, 0xae, 0x4d, 0xc1, 0x21, 0xdf, 0x01, 0x7e, 0x0c, + 0xd4, 0x11, 0x3c, 0xb8, 0x1c, 0xd1, 0x6a, 0xbb, 0xe7, 0x78, 0xed, 0xd8, + 0x9e, 0x8f, 0x55, 0x3b, 0x0c, 0x4b, 0xc8, 0x08, 0xe4, 0xa2, 0x41, 0x17, + 0xfa, 0x41, 0xd1, 0x00, 0xe1, 0x00, 0xa0, 0x83, 0x86, 0xc0, 0xdc, 0x65, + 0xe1, 0x56, 0x14, 0x88, 0xe5, 0xb1, 0x2b, 0x94, 0xd4, 0x76, 0x0c, 0x95, + 0x23, 0xad, 0x3f, 0x87, 0x1f, 0x3e, 0x82, 0xcd, 0x21, 0x99, 0xd0, 0x3f, + 0x5d, 0xc9, 0x29, 0x49, 0xe7, 0x8f, 0x1f, 0x46, 0x1d, 0xc4, 0x47, 0x75, + 0x8c, 0xb9, 0x6a, 0x0e, 0x16, 0x2c, 0xbf, 0x3e, 0x22, 0x48, 0x9c, 0xcd, + 0xc8, 0x2a, 0x68, 0x41, 0x36, 0xad, 0x40, 0x57, 0xe2, 0x20, 0x48, 0x48, + 0xf3, 0x7e, 0xf4, 0x65, 0x5c, 0xa4, 0xe3, 0x5e, 0x74, 0x94, 0x92, 0xac, + 0x5e, 0xf6, 0x3c, 0xfe, 0xa4, 0x43, 0xed, 0x1c, 0x44, 0xdf, 0x59, 0x25, + 0x54, 0xba, 0x73, 0x11, 0x67, 0x0b, 0x33, 0xaa, 0x4b, 0xca, 0xdb, 0x10, + 0xfb, 0xb4, 0x5a, 0x98, 0xc3, 0x04, 0x38, 0xb4, 0xed, 0xa1, 0xf5, 0xb0, + 0x99, 0x71, 0x71, 0x5b, 0x05, 0x95, 0x17, 0xa9, 0xaa, 0x60, 0x3b, 0x29, + 0x8b, 0x40, 0x58, 0xdf, 0xb9, 0x16, 0xf5, 0x50, 0x9a, 0xcb, 0xe6, 0x16, + 0x8c, 0xe5, 0x9d, 0xc6, 0x6a, 0xb7, 0x2a, 0x34, 0x44, 0xc8, 0xbc, 0xda, + 0xb8, 0x8d, 0xec, 0xb8, 0x6e, 0x20, 0x8c, 0x9e, 0xd6, 0x89, 0x57, 0x44, + 0xf9, 0xc9, 0xd9, 0xe5, 0xf1, 0xef, 0xa2, 0x61, 0xca, 0x35, 0x25, 0x1d, + 0xe5, 0xf0, 0x21, 0x67, 0xc7, 0xbe, 0x7a, 0xdc, 0x1a, 0x7b, 0xea, 0x52, + 0x72, 0xd5, 0x04, 0x6a, 0x79, 0x1f, 0x52, 0x2a, 0xe8, 0x5e, 0x4a, 0xb5, + 0xf3, 0xca, 0x80, 0x66, 0xef, 0xd2, 0x38, 0x72, 0xc5, 0xba, 0x79, 0xee, + 0xef, 0x99, 0xf4, 0xdf, 0x7b, 0x38, 0xf5, 0xa5, 0xbe, 0x08, 0xb0, 0x3b, + 0x6e, 0x47, 0xed, 0x1f, 0xb0, 0x1b, 0x8d, 0xd3, 0x9c, 0xae, 0x60, 0xe6, + 0x53, 0x63, 0x31, 0x79, 0x22, 0x9e, 0x0f, 0x63, 0x67, 0x93, 0x0e, 0xe9, + 0xe7, 0x2b, 0x59, 0xae, 0x31, 0x52, 0xff, 0x04, 0x0a, 0x5d, 0xcd, 0xa8, + 0x76, 0xee, 0x42, 0x56, 0x8a, 0xe4, 0x57, 0xa4, 0x10, 0xa2, 0x1a, 0x89, + 0xc2, 0x2d, 0x6e, 0x20, 0x46, 0x8e, 0x5a, 0x85, 0x2c, 0x31, 0x77, 0x37, + 0x5b, 0x20, 0xdb, 0x71, 0x08, 0x13, 0xd3, 0xe9, 0x24, 0x9a, 0xad, 0x34, + 0xbd, 0x5b, 0xf9, 0x30, 0xe7, 0x23, 0x41, 0x5d, 0xf9, 0xec, 0xb3, 0xc6, + 0xbd, 0xfb, 0xe0, 0x9e, 0xde, 0xa7, 0xaf, 0x03, 0xb5, 0x68, 0xca, 0xfe, + 0x55, 0x2b, 0x7b, 0xe4, 0x75, 0xa3, 0x86, 0xcc, 0x19, 0xa6, 0x6c, 0x4a, + 0x87, 0xce, 0x56, 0xda, 0xb2, 0x2f, 0xae, 0xb2, 0xd3, 0x86, 0x08, 0xdd, + 0x32, 0xce, 0xb8, 0x10, 0x2f, 0xfd, 0x1a, 0x29, 0xd4, 0x4e, 0x5e, 0x7d, + 0xb0, 0x81, 0x80, 0x42, 0x42, 0xd2, 0x80, 0x65, 0x1a, 0x96, 0xb7, 0x86, + 0x99, 0x36, 0xcc, 0xf9, 0x35, 0x3a, 0x18, 0x87, 0xcf, 0x58, 0x3d, 0x6b, + 0x03, 0x57, 0x1e, 0xc0, 0xdd, 0x18, 0xfd, 0x77, 0xeb, 0x87, 0xf3, 0xee, + 0x9f, 0x19, 0xce, 0x41, 0xf4, 0x68, 0x60, 0xa3, 0xd6, 0x7a, 0x60, 0x26, + 0x52, 0xe8, 0x49, 0x9d, 0x64, 0x30, 0x7e, 0x19, 0xfd, 0xc9, 0x1a, 0x8d, + 0xd9, 0xe1, 0x31, 0xaa, 0xe2, 0x6a, 0x36, 0xd5, 0x95, 0x79, 0x26, 0x4f, + 0x43, 0x7e, 0xe4, 0xf6, 0x7b, 0x36, 0x94, 0x8f, 0x1d, 0xae, 0xe5, 0xf4, + 0x5b, 0x64, 0xae, 0xef, 0x4f, 0xb2, 0xcd, 0xa4, 0x85, 0x20, 0xbf, 0x41, + 0xd0, 0xd6, 0xe5, 0x79, 0xc6, 0x59, 0x7f, 0x40, 0x90, 0x0a, 0x0d, 0xd6, + 0x97, 0xcb, 0xe3, 0x99, 0x20, 0x0b, 0xac, 0xf6, 0x9a, 0x7e, 0xb6, 0x2b, + 0xd0, 0x54, 0xc4, 0x1e, 0x15, 0x07, 0x90, 0xf4, 0x4c, 0xba, 0xac, 0x16, + 0x08, 0xb5, 0xac, 0x96, 0x26, 0x93, 0x7b, 0x05, 0xc5, 0xba, 0x9f, 0x62, + 0xe5, 0x82, 0xba, 0xdd, 0x28, 0x72, 0x26, 0x63, 0x94, 0x1a, 0xce, 0x5a, + 0xfa, 0x45, 0x0a, 0xca, 0xe2, 0x9e, 0x4f, 0x12, 0x69, 0xa9, 0x5c, 0x1b, + 0xf2, 0x7c, 0x18, 0x30, 0x5e, 0x21, 0x67, 0xb0, 0xef, 0xe8, 0x6a, 0x99, + 0x23, 0x14, 0x45, 0x33, 0xef, 0x35, 0x71, 0x92, 0x1a, 0xbd, 0x38, 0x78, + 0xfb, 0xd5, 0x31, 0xce, 0x3b, 0xb3, 0x5d, 0x9f, 0x26, 0xcc, 0x79, 0x80, + 0x7d, 0x38, 0xc6, 0x0b, 0x01, 0x26, 0x49, 0xf9, 0x8d, 0xc9, 0x72, 0xcc, + 0x3e, 0xf9, 0x77, 0x7a, 0x0c, 0xd2, 0x02, 0x98, 0xa4, 0xd3, 0x94, 0x07, + 0xc1, 0x2c, 0x57, 0xdd, 0xdf, 0x1b, 0x91, 0xa9, 0xa7, 0xe0, 0x18, 0x2c, + 0xd2, 0xd0, 0x0a, 0x41, 0x97, 0x2d, 0x96, 0xa3, 0x45, 0xac, 0xe9, 0x68, + 0x71, 0x98, 0xe1, 0xa4, 0x9a, 0xc0, 0xa0, 0x32, 0x05, 0xbe, 0x3b, 0x24, + 0xf8, 0xd3, 0x49, 0x9d, 0x39, 0xa4, 0xce, 0x41, 0xa8, 0x71, 0x09, 0x16, + 0xd4, 0xee, 0xce, 0x8e, 0xc7, 0x17, 0xf2, 0x99, 0x5a, 0x0d, 0x22, 0xcb, + 0xa3, 0x9d, 0xfe, 0x8b, 0x17, 0xeb, 0xe8, 0xc7, 0x35, 0x8a, 0x8c, 0x9b, + 0x67, 0x1f, 0xdd, 0x66, 0x9f, 0x1f, 0x5d, 0xd7, 0x66, 0x8b, 0x6c, 0x81, + 0x92, 0x24, 0x1a, 0x7a, 0x50, 0xb8, 0xf8, 0x16, 0xd5, 0x41, 0xc4, 0xf6, + 0x05, 0x5b, 0xe4, 0xdc, 0x09, 0x18, 0xbc, 0x94, 0x1b, 0x91, 0x93, 0x04, + 0x00, 0x97, 0x65, 0xea, 0xca, 0x82, 0xa3, 0x0f, 0x52, 0x67, 0x8e, 0xfe, + 0xa8, 0x85, 0x09, 0x44, 0xcc, 0x35, 0x4b, 0x74, 0xd5, 0x9c, 0x8d, 0x31, + 0xd2, 0x77, 0xe7, 0xac, 0x8c, 0x92, 0xee, 0x22, 0x02, 0x3b, 0x49, 0x9f, + 0x30, 0x4c, 0x6c, 0xd7, 0x64, 0xd1, 0x77, 0x5a, 0xac, 0x8f, 0x0b, 0x2d, + 0xb0, 0x1f, 0x4a, 0xe0, 0x99, 0xd3, 0xb9, 0x56, 0xcd, 0x73, 0xbb, 0xbf, + 0x46, 0x31, 0xbe, 0x8c, 0xfa, 0x01, 0x4b, 0x57, 0xc4, 0x21, 0xe6, 0xe7, + 0xb3, 0x95, 0xc9, 0x28, 0xda, 0x03, 0x5a, 0x37, 0x43, 0x57, 0xa5, 0x7a, + 0x71, 0x4f, 0x05, 0x4b, 0x50, 0x50, 0x83, 0xa5, 0xb7, 0x74, 0x29, 0xdd, + 0xe0, 0x8a, 0xa8, 0x31, 0xf0, 0x8f, 0x1b, 0x4a, 0xdc, 0x52, 0x87, 0xd4, + 0xa4, 0xd8, 0x94, 0x73, 0x3d, 0x55, 0x3b, 0xa9, 0x2b, 0xca, 0x0a, 0x4f, + 0xc9, 0x0f, 0xe2, 0xfc, 0x64, 0xff, 0xfa, 0xd8, 0x1e, 0x19, 0x15, 0x1f, + 0x4e, 0xab, 0x2f, 0x5f, 0x1b, 0x65, 0xab, 0xc1, 0xe0, 0x52, 0xde, 0x97, + 0xae, 0xe3, 0xf6, 0xee, 0xe4, 0x7d, 0x5b, 0x8e, 0x16, 0xa2, 0xe7, 0x6b, + 0x5f, 0x51, 0xa8, 0x5c, 0x64, 0xbb, 0x61, 0x66, 0xb0, 0x76, 0x02, 0x6e, + 0x91, 0x56, 0x39, 0xf8, 0x46, 0xa4, 0xf9, 0x21, 0xc0, 0xa8, 0x62, 0xba, + 0x01, 0xa8, 0x2e, 0x78, 0xdb, 0x2d, 0x22, 0x47, 0xae, 0x14, 0x89, 0x03, + 0x45, 0x58, 0x4e, 0x90, 0x75, 0xc3, 0xee, 0x21, 0x0f, 0x6c, 0x92, 0x2f, + 0xe7, 0x32, 0x0b, 0x38, 0x57, 0x68, 0xf0, 0x71, 0x71, 0x83, 0x80, 0x02, + 0xa7, 0x20, 0x35, 0x6f, 0xa2, 0x10, 0x9c, 0x83, 0xae, 0x1e, 0xb9, 0x77, + 0xc0, 0x55, 0x2b, 0x4b, 0x51, 0x5d, 0x81, 0x40, 0x9f, 0xf8, 0x58, 0xca, + 0x67, 0x96, 0xd1, 0x6a, 0x2c, 0x05, 0xf1, 0x37, 0xca, 0x39, 0xd6, 0x48, + 0xae, 0xaa, 0x8f, 0x49, 0x5b, 0x22, 0xca, 0x40, 0xfd, 0x41, 0x0d, 0x3c, + 0xa4, 0x12, 0xd7, 0x96, 0x10, 0xb2, 0x2c, 0x00, 0x1a, 0x24, 0xb5, 0xd8, + 0xd8, 0xac, 0x66, 0xcc, 0x40, 0x09, 0xf5, 0xb0, 0x3e, 0x9a, 0x63, 0xc4, + 0xf8, 0xff, 0x12, 0xd0, 0x08, 0x0b, 0x3e, 0xa3, 0xae, 0x67, 0xd2, 0x27, + 0x66, 0x28, 0x03, 0x94, 0x04, 0x1e, 0x09, 0x22, 0x1b, 0x5e, 0xba, 0xb2, + 0xec, 0x26, 0x07, 0x7e, 0x7b, 0x7c, 0xf1, 0xe5, 0xd9, 0xf0, 0x98, 0x38, + 0xc4, 0xd1, 0xf1, 0x97, 0xef, 0x98, 0x7b, 0xf0, 0x8e, 0x89, 0x91, 0x02, + 0x18, 0x14, 0x82, 0x28, 0x8d, 0xc4, 0x29, 0x27, 0x23, 0x4b, 0xfe, 0x67, + 0xcf, 0x28, 0x43, 0xe3, 0xd7, 0x54, 0x8a, 0x9e, 0x26, 0xa2, 0xd5, 0xa6, + 0x88, 0x1c, 0xf4, 0xf0, 0x2c, 0x2c, 0x3b, 0xcf, 0x19, 0x4f, 0xb9, 0x34, + 0x3c, 0x12, 0xc3, 0xf3, 0x2d, 0xf6, 0xbd, 0x6c, 0x7c, 0x27, 0x36, 0x0c, + 0x3d, 0x10, 0xbe, 0x62, 0x90, 0x55, 0x06, 0x1a, 0x04, 0x65, 0x7f, 0x15, + 0xaa, 0x7b, 0x9a, 0xc9, 0xed, 0xc5, 0x29, 0x53, 0x38, 0xcb, 0xc0, 0xa0, + 0x4f, 0x51, 0x61, 0x50, 0xb1, 0x36, 0xb5, 0x4e, 0x4f, 0x21, 0x04, 0x47, + 0x6c, 0x46, 0xd2, 0x4d, 0xa6, 0xca, 0x96, 0xc1, 0x85, 0x8a, 0x44, 0x92, + 0xb3, 0xe5, 0xf6, 0x54, 0x33, 0xbf, 0x04, 0xe8, 0x28, 0x84, 0xe4, 0x26, + 0x1f, 0x09, 0x86, 0x47, 0x10, 0x6d, 0x41, 0xb0, 0x92, 0xa5, 0x96, 0x8d, + 0x03, 0xd2, 0xe2, 0x95, 0x0f, 0xbc, 0x7c, 0x4a, 0x3a, 0x77, 0xeb, 0xd9, + 0xc1, 0xa5, 0xcc, 0x94, 0x13, 0x69, 0xe5, 0x42, 0x76, 0xd5, 0xc3, 0xe1, + 0x47, 0xf2, 0x59, 0x60, 0x1c, 0x84, 0xe4, 0x30, 0xe2, 0xe4, 0x3c, 0x71, + 0x18, 0x60, 0x20, 0x01, 0xaf, 0x2f, 0x7e, 0x63, 0x76, 0x16, 0x0d, 0x5d, + 0xaa, 0xe7, 0x7f, 0xab, 0x67, 0x9f, 0xb7, 0x14, 0xc6, 0xa3, 0xa8, 0x5e, + 0xe3, 0x54, 0xcf, 0xa0, 0xb4, 0x2e, 0x75, 0x6f, 0xca, 0x87, 0x32, 0x34, + 0xb1, 0x6d, 0x6c, 0x6c, 0x1c, 0x1d, 0x5f, 0x1e, 0x9c, 0x9c, 0x1e, 0x1f, + 0x45, 0x27, 0x6f, 0x5f, 0x9f, 0x5d, 0xbc, 0x39, 0xb8, 0x54, 0x27, 0xd3, + 0x91, 0xd3, 0x51, 0x5d, 0xe9, 0x16, 0x67, 0x02, 0xf0, 0xfa, 0x2b, 0x48, + 0x98, 0x76, 0xf1, 0x5a, 0xc1, 0x91, 0x64, 0x19, 0x92, 0xca, 0x1a, 0x6c, + 0x44, 0xea, 0x9c, 0xf2, 0xc5, 0x58, 0xf8, 0x7e, 0xde, 0x76, 0x0e, 0x85, + 0x81, 0x2d, 0xa7, 0x69, 0x98, 0xc0, 0x39, 0x7b, 0xb4, 0x29, 0x57, 0x78, + 0x4c, 0xee, 0x26, 0x60, 0xf4, 0x23, 0xe3, 0x07, 0x34, 0xd9, 0x3f, 0xe1, + 0x3c, 0x5e, 0x88, 0x97, 0x5a, 0xc1, 0xfd, 0xa4, 0x74, 0x85, 0x0b, 0x99, + 0x5c, 0xb8, 0x9d, 0x20, 0x93, 0x8c, 0x28, 0x10, 0x15, 0x92, 0x83, 0x36, + 0x5d, 0x52, 0x96, 0x55, 0x5b, 0x11, 0x97, 0x26, 0x3e, 0x09, 0xf7, 0x97, + 0xb3, 0xd6, 0x36, 0xd8, 0x43, 0x5d, 0x6a, 0x1d, 0x90, 0x87, 0x32, 0x99, + 0x17, 0x5c, 0xf3, 0xca, 0xce, 0x3a, 0xbf, 0xe2, 0x99, 0xa8, 0xd9, 0x71, + 0x15, 0xe0, 0x31, 0x6c, 0x6a, 0xd3, 0x39, 0x21, 0x48, 0x72, 0xe9, 0x9f, + 0x28, 0x62, 0x1b, 0xaf, 0x05, 0xd7, 0x37, 0xe6, 0x9f, 0x73, 0x0f, 0x61, + 0xa0, 0x11, 0x29, 0x5e, 0x61, 0x09, 0x6a, 0x3c, 0xe9, 0x69, 0xf3, 0xe7, + 0xb6, 0x30, 0x4a, 0x3b, 0xa2, 0x87, 0xb8, 0x60, 0x66, 0x5f, 0xbb, 0xd7, + 0x90, 0x30, 0xe8, 0xc2, 0xb6, 0x85, 0x22, 0x3c, 0x41, 0x08, 0x18, 0x65, + 0x02, 0xca, 0x82, 0x35, 0x90, 0x79, 0x80, 0xbe, 0x4b, 0x33, 0x1a, 0xb3, + 0x88, 0xef, 0xed, 0xbc, 0xae, 0x20, 0x55, 0xa3, 0xf2, 0xb7, 0x2b, 0x86, + 0x36, 0x74, 0xcf, 0x62, 0x25, 0x83, 0x17, 0x62, 0xef, 0x77, 0xc5, 0xfa, + 0x6f, 0x1a, 0x8e, 0x3b, 0x93, 0xac, 0x36, 0xa8, 0x9e, 0x83, 0xa6, 0x99, + 0xba, 0x32, 0xa9, 0xf0, 0xc5, 0xaa, 0xa7, 0x32, 0xe4, 0xf4, 0xd6, 0x35, + 0x46, 0x3f, 0x69, 0x1b, 0x81, 0x72, 0x71, 0x94, 0x32, 0xd5, 0xc2, 0x65, + 0x31, 0x3c, 0x76, 0x8c, 0x4c, 0xb1, 0xa1, 0xe0, 0x13, 0xca, 0x29, 0x61, + 0x3a, 0x0d, 0x73, 0x8e, 0xc7, 0x5c, 0x4b, 0x8b, 0xeb, 0x91, 0x6a, 0xed, + 0xbc, 0x20, 0x6e, 0x5e, 0x3c, 0xea, 0x8a, 0xb2, 0x0a, 0xa6, 0x37, 0xdf, + 0x30, 0x54, 0x48, 0x7b, 0xc9, 0x62, 0x22, 0xc0, 0xfd, 0x25, 0xf7, 0x1c, + 0x4c, 0x9e, 0xdd, 0x99, 0x49, 0x5c, 0xc0, 0xc6, 0x88, 0xf0, 0x59, 0xb9, + 0x33, 0x40, 0x02, 0x98, 0xab, 0x33, 0x5b, 0xe2, 0xf2, 0xf1, 0x25, 0x94, + 0xfb, 0x02, 0xd1, 0x11, 0x73, 0x06, 0x9d, 0x1d, 0x0a, 0x09, 0xe4, 0x73, + 0xad, 0xe0, 0xae, 0xe3, 0x9c, 0xf8, 0x7c, 0x8a, 0x68, 0x2c, 0x0d, 0x4f, + 0x39, 0xcf, 0x0a, 0x39, 0x6f, 0x90, 0xb4, 0x3b, 0xbe, 0xd2, 0x45, 0x67, + 0x71, 0x43, 0x7d, 0x74, 0xa2, 0x6b, 0xd6, 0x55, 0x46, 0x59, 0x18, 0xdb, + 0xa7, 0xdb, 0x32, 0x91, 0xc7, 0x5f, 0x5d, 0xc4, 0x57, 0x71, 0x32, 0xfd, + 0xfd, 0xde, 0xce, 0x30, 0xbe, 0x5e, 0x4e, 0xe3, 0x3f, 0xe0, 0xc5, 0x57, + 0x4f, 0x9e, 0xec, 0xed, 0x7c, 0xfa, 0xd9, 0x4e, 0xa7, 0xe6, 0x2a, 0x0a, + 0xfc, 0xcc, 0x70, 0x1b, 0xa2, 0x34, 0x35, 0xf3, 0x5d, 0xf4, 0x33, 0x18, + 0x5f, 0xa7, 0xdc, 0xcd, 0xd7, 0x2c, 0xbc, 0xe8, 0x1a, 0xc4, 0x08, 0xfe, + 0x10, 0x36, 0xa9, 0x35, 0xb0, 0xe8, 0xc6, 0x25, 0xba, 0xfe, 0x64, 0x77, + 0x5f, 0x58, 0xd9, 0x35, 0xec, 0x52, 0xb1, 0x50, 0x6c, 0xf4, 0x32, 0x9d, + 0xd3, 0x0d, 0xf4, 0x79, 0x54, 0xc6, 0xd7, 0x8e, 0x56, 0xd1, 0x82, 0xab, + 0x5a, 0x6d, 0x96, 0xf0, 0xab, 0x14, 0xf5, 0x93, 0x07, 0xd1, 0xe6, 0xa5, + 0xc0, 0xc3, 0x41, 0xf0, 0x59, 0x24, 0xf9, 0x54, 0x32, 0x7b, 0xe3, 0x99, + 0x85, 0x97, 0xf2, 0xfb, 0xec, 0x8c, 0x1f, 0x2c, 0xa6, 0xae, 0x46, 0x37, + 0x34, 0xb0, 0xd4, 0x13, 0xdc, 0x74, 0x51, 0xf8, 0x9a, 0x50, 0x72, 0xdd, + 0x84, 0xc0, 0x73, 0xb4, 0x58, 0xa8, 0x78, 0xd1, 0xc1, 0xac, 0x7a, 0xae, + 0xb8, 0x4c, 0x7f, 0x62, 0x33, 0x1d, 0xe0, 0x77, 0x54, 0xde, 0xd3, 0x02, + 0xc2, 0x9d, 0x85, 0xe4, 0x42, 0xb9, 0x82, 0x26, 0x9a, 0x3a, 0x5d, 0x99, + 0x57, 0xec, 0x83, 0x40, 0xa2, 0x97, 0xa6, 0xe4, 0xee, 0x7e, 0xfe, 0x0a, + 0x04, 0xb1, 0xfb, 0xf9, 0x1f, 0xdc, 0x67, 0x7b, 0xfa, 0xd9, 0xde, 0xe7, + 0x7f, 0x18, 0x0c, 0x30, 0x3e, 0xa6, 0x90, 0xae, 0x7d, 0xdd, 0xd5, 0x04, + 0xcb, 0x58, 0x8f, 0xb0, 0xfc, 0xe5, 0x50, 0x86, 0x64, 0xaf, 0x3b, 0xd6, + 0x73, 0xb8, 0xca, 0x3d, 0xb5, 0xbd, 0x3b, 0xbe, 0x95, 0x1a, 0x38, 0x33, + 0x10, 0x4c, 0x8b, 0xb6, 0x45, 0x77, 0x26, 0x42, 0xb4, 0x53, 0x38, 0x78, + 0x96, 0x38, 0xfa, 0x23, 0x53, 0xea, 0x1f, 0x37, 0x22, 0x35, 0x91, 0xf3, + 0x76, 0xa0, 0x04, 0x63, 0x64, 0x64, 0x4b, 0x8f, 0xc6, 0x06, 0x6f, 0xc7, + 0x2d, 0x73, 0x44, 0x29, 0xdf, 0x81, 0x41, 0x51, 0x8f, 0x3f, 0x29, 0xc4, + 0x91, 0x6c, 0x38, 0xf3, 0x33, 0xe4, 0x6e, 0x48, 0x06, 0x14, 0x49, 0x18, + 0x25, 0xf3, 0x06, 0x3c, 0xf9, 0xfb, 0xef, 0xbf, 0x57, 0x71, 0x8a, 0x7e, + 0xd1, 0x71, 0xdf, 0x10, 0x27, 0x9a, 0x10, 0x73, 0x9b, 0xa1, 0x74, 0x84, + 0x56, 0x61, 0xd1, 0x0b, 0xff, 0x4a, 0xe7, 0x29, 0x8d, 0xd0, 0xc6, 0x4a, + 0xcd, 0x62, 0x1e, 0x19, 0x96, 0xf4, 0x58, 0x98, 0x18, 0x28, 0x73, 0x13, + 0xae, 0x40, 0x1f, 0x6a, 0x11, 0x12, 0x3e, 0xef, 0x1c, 0x36, 0x1d, 0xb4, + 0x4f, 0x8d, 0x99, 0x1a, 0xac, 0x1b, 0x09, 0x8a, 0x15, 0x19, 0xe7, 0x55, + 0x47, 0x1e, 0xbc, 0x4e, 0x3b, 0x6a, 0xe0, 0x95, 0x4f, 0x3a, 0x3e, 0x5f, + 0x56, 0x76, 0x03, 0x5b, 0xf6, 0x4a, 0x04, 0xa7, 0xf4, 0xe7, 0xe4, 0xd5, + 0xee, 0x4e, 0xfb, 0x13, 0xac, 0x0d, 0x45, 0x8c, 0x34, 0xfb, 0xca, 0x1b, + 0xc8, 0x1f, 0x7b, 0x3e, 0x9d, 0xc8, 0xd3, 0x5a, 0x40, 0x11, 0x05, 0x65, + 0x5e, 0x75, 0x46, 0x7c, 0xbf, 0xf2, 0xff, 0xaf, 0x19, 0x07, 0x82, 0xdb, + 0xf4, 0xd9, 0x62, 0x39, 0x9a, 0xa5, 0x95, 0x01, 0x6f, 0xf3, 0x04, 0x3f, + 0x87, 0x49, 0x25, 0x71, 0xb4, 0x81, 0xca, 0xbb, 0x22, 0xf9, 0x75, 0xaf, + 0xb2, 0x6c, 0x14, 0xe7, 0x5d, 0x35, 0xa2, 0xda, 0x38, 0xbb, 0xbb, 0x7b, + 0x4f, 0x9e, 0x3e, 0xeb, 0x0e, 0x54, 0x4a, 0x03, 0x83, 0x80, 0x62, 0x96, + 0xaa, 0x2a, 0x23, 0x4d, 0xc4, 0x72, 0x3c, 0x2d, 0x76, 0x0b, 0x69, 0x6c, + 0x6d, 0xce, 0x06, 0xe6, 0x61, 0xdc, 0xdd, 0x2b, 0xe9, 0xed, 0x0f, 0xdc, + 0xcf, 0x2b, 0x74, 0xf1, 0x87, 0x74, 0xf2, 0xca, 0xcd, 0xf0, 0x0f, 0x3c, + 0x97, 0x57, 0x3a, 0x09, 0xda, 0x57, 0xcb, 0x1b, 0x28, 0xb6, 0x36, 0x5a, + 0xb9, 0x5a, 0xeb, 0xe6, 0xda, 0x26, 0x6e, 0x60, 0xd2, 0xf0, 0x74, 0xf5, + 0x27, 0x62, 0xb9, 0x85, 0xac, 0xea, 0x83, 0xe6, 0xb7, 0x1f, 0xfa, 0xd4, + 0x4a, 0x9f, 0x5b, 0xe9, 0x7b, 0x76, 0x1d, 0xcd, 0x38, 0x49, 0x86, 0x37, + 0xa2, 0xa7, 0x99, 0x13, 0x53, 0xd8, 0x3a, 0x54, 0x10, 0xc8, 0x32, 0xf8, + 0x91, 0x0e, 0xbf, 0x3a, 0xe9, 0xaa, 0x83, 0x56, 0x14, 0xb7, 0x5e, 0x9b, + 0x71, 0xcd, 0x45, 0x4d, 0x28, 0xe2, 0xc2, 0x86, 0x41, 0xa1, 0xc7, 0xec, + 0x6f, 0xe4, 0x7e, 0x25, 0xcd, 0x89, 0x3a, 0xd3, 0x3b, 0x67, 0xca, 0xe6, + 0xba, 0x1c, 0x9f, 0x84, 0xcd, 0x00, 0xc1, 0x46, 0x1c, 0x8f, 0xb0, 0x54, + 0x2f, 0x5c, 0x86, 0x44, 0xff, 0xb5, 0xf3, 0x06, 0xb8, 0x88, 0x7c, 0x7d, + 0x94, 0xbe, 0x12, 0x6e, 0x62, 0x0c, 0xa2, 0xe3, 0xca, 0x6d, 0x09, 0x25, + 0x84, 0xbc, 0x03, 0xbe, 0x8c, 0x51, 0x52, 0x29, 0xe2, 0x24, 0x62, 0x21, + 0x73, 0xcf, 0x97, 0xae, 0x3e, 0xd3, 0xe7, 0x11, 0x6a, 0x1c, 0xc8, 0x5b, + 0x1a, 0x73, 0x5f, 0xa9, 0x65, 0x8b, 0x97, 0x54, 0x39, 0x70, 0x9e, 0x8f, + 0xc0, 0x6b, 0xab, 0x62, 0x81, 0xb4, 0x20, 0x13, 0x1d, 0xad, 0x54, 0xfd, + 0xe7, 0x16, 0xba, 0x7f, 0xc6, 0x21, 0x78, 0xc9, 0xdb, 0x80, 0xaf, 0x3f, + 0xef, 0x8a, 0x09, 0xcf, 0xbd, 0xcb, 0xc3, 0xa8, 0x79, 0x56, 0x84, 0x40, + 0xc3, 0xf9, 0x64, 0x57, 0x0e, 0xba, 0x46, 0x64, 0x31, 0x4e, 0xa8, 0x9d, + 0x43, 0x9d, 0x4a, 0x93, 0xe9, 0x44, 0x4b, 0xc8, 0xa9, 0x2c, 0xd4, 0xd3, + 0xc6, 0x13, 0xce, 0x56, 0x66, 0xd9, 0xb1, 0xcb, 0x01, 0x38, 0x78, 0xaf, + 0xeb, 0x90, 0x70, 0x58, 0xa4, 0x4e, 0xc0, 0xee, 0xf2, 0xc4, 0xca, 0xab, + 0x6d, 0x68, 0x22, 0x9d, 0x97, 0xe5, 0xc3, 0x89, 0x15, 0x81, 0xe8, 0xe0, + 0xf3, 0x12, 0x24, 0xdf, 0xba, 0x71, 0x44, 0x5e, 0x73, 0xd2, 0x8f, 0x76, + 0xfa, 0x8a, 0x97, 0x7b, 0x77, 0x70, 0x9d, 0x5e, 0xc9, 0x62, 0x10, 0x8b, + 0xbc, 0x4e, 0xb6, 0xe9, 0xcf, 0x1e, 0x7d, 0xbe, 0xc7, 0x32, 0x19, 0xff, + 0xf2, 0x04, 0x7e, 0xfb, 0xf0, 0xe6, 0x0f, 0xce, 0x86, 0x3b, 0x17, 0xfc, + 0x4b, 0xea, 0x6e, 0x7c, 0x35, 0x49, 0xeb, 0x28, 0x41, 0xe6, 0x0a, 0x32, + 0xea, 0x05, 0xcd, 0x5e, 0x60, 0x6e, 0x06, 0xc8, 0x5c, 0x06, 0xe9, 0xa4, + 0xf0, 0x61, 0x6e, 0xea, 0x58, 0x54, 0x31, 0x9d, 0xa5, 0xee, 0x54, 0x0d, + 0x26, 0x1c, 0x54, 0x8c, 0x7b, 0x35, 0xb9, 0xdf, 0xea, 0x85, 0xc1, 0x43, + 0x56, 0x55, 0xd4, 0x95, 0x3e, 0x46, 0xc6, 0x1d, 0x77, 0xbf, 0xa9, 0x75, + 0xbc, 0x18, 0xb7, 0x42, 0x53, 0x83, 0xb0, 0xcd, 0x69, 0x7d, 0x07, 0xab, + 0xa5, 0xb0, 0x24, 0xe0, 0x23, 0x2d, 0xca, 0x2d, 0xee, 0x26, 0x99, 0x16, + 0xd0, 0xd4, 0x79, 0xd0, 0x1b, 0x51, 0xb0, 0xee, 0x86, 0x08, 0x82, 0xae, + 0xba, 0x5c, 0x9b, 0x6b, 0x1b, 0xfe, 0x20, 0xe1, 0x6d, 0xc7, 0x33, 0x01, + 0xc0, 0x07, 0xd9, 0x4e, 0xfb, 0x72, 0x5f, 0xaa, 0x10, 0xd4, 0x7f, 0x3d, + 0x88, 0x4e, 0x11, 0xfa, 0x56, 0xc4, 0x92, 0x45, 0x6d, 0x77, 0xaa, 0x51, + 0x00, 0x91, 0x8b, 0x48, 0xdd, 0x1b, 0x52, 0x94, 0x8c, 0x13, 0x57, 0x8d, + 0x8c, 0x80, 0xd9, 0xe7, 0xd5, 0x4c, 0x91, 0x28, 0x54, 0x02, 0xe9, 0xc1, + 0x0a, 0xed, 0x9e, 0x43, 0x89, 0x3a, 0x57, 0x22, 0x3b, 0x20, 0xd2, 0xa0, + 0x11, 0x71, 0xe8, 0xab, 0xc8, 0x19, 0xb0, 0x72, 0x47, 0xf8, 0x92, 0x1f, + 0x9b, 0x88, 0x99, 0x45, 0xcb, 0x18, 0x8b, 0x0f, 0x8b, 0x5a, 0x03, 0x65, + 0xf1, 0xdc, 0x99, 0x74, 0x3a, 0xd0, 0x14, 0xa7, 0x89, 0x53, 0xa7, 0x15, + 0x78, 0x58, 0x30, 0x80, 0x33, 0x85, 0x81, 0x12, 0x01, 0xc3, 0xfb, 0x17, + 0x78, 0x90, 0x3c, 0xae, 0xf8, 0x8e, 0x7e, 0xe1, 0x4b, 0x7e, 0x94, 0xd3, + 0x4e, 0x27, 0xb9, 0x5c, 0x07, 0xe8, 0x15, 0x18, 0x31, 0x0e, 0xe2, 0xf3, + 0xcd, 0x69, 0x64, 0xd9, 0xe8, 0x57, 0x5e, 0x38, 0xb4, 0xa8, 0x1d, 0x4c, + 0x51, 0x6d, 0x21, 0x22, 0x01, 0xe9, 0x53, 0x72, 0xb3, 0xc9, 0xda, 0x72, + 0x42, 0x5b, 0xc4, 0x8b, 0x53, 0x39, 0xa6, 0xc1, 0x13, 0xf2, 0x2a, 0xd3, + 0x0e, 0x91, 0x46, 0x97, 0x97, 0xa0, 0xdb, 0x8b, 0xba, 0x3c, 0x54, 0xfe, + 0xa2, 0x8b, 0xf5, 0xc4, 0xc7, 0xc1, 0xf2, 0x75, 0x07, 0x2d, 0x27, 0x8f, + 0x9f, 0x79, 0xf5, 0x45, 0x65, 0x95, 0xf0, 0xb9, 0x35, 0xf5, 0x4a, 0xa2, + 0x65, 0x1b, 0x52, 0xb6, 0xbd, 0x1b, 0xb4, 0xff, 0xea, 0x90, 0x5a, 0x91, + 0x22, 0x70, 0xb2, 0x27, 0x10, 0xa8, 0xdd, 0x67, 0x29, 0xd2, 0x6e, 0x1a, + 0x0d, 0x7d, 0xf8, 0xe4, 0x5e, 0x1a, 0xfb, 0x71, 0xe1, 0x41, 0xc2, 0xd1, + 0x84, 0x04, 0x8c, 0xdb, 0xd2, 0x6e, 0xa6, 0xa2, 0xe9, 0xdd, 0x67, 0xb0, + 0x2b, 0x80, 0xcf, 0xec, 0x0e, 0x90, 0x86, 0xe1, 0x61, 0x83, 0x5c, 0x03, + 0x4e, 0x5d, 0xef, 0x60, 0x41, 0x3b, 0x66, 0x26, 0x71, 0x4a, 0xbc, 0xad, + 0x72, 0x1b, 0xbf, 0x5a, 0xa4, 0x63, 0xd4, 0x74, 0x7d, 0xf5, 0xc5, 0x24, + 0xbb, 0x66, 0x6e, 0xd5, 0xa3, 0x8b, 0x95, 0x7f, 0x76, 0xf8, 0xe1, 0x3d, + 0xed, 0x54, 0x06, 0x8c, 0xb3, 0x22, 0x72, 0xbb, 0xfd, 0xbd, 0x26, 0x7c, + 0x89, 0x1a, 0x9e, 0x64, 0x63, 0x6d, 0xdb, 0x35, 0x2d, 0xfb, 0x41, 0xed, + 0xbb, 0x2f, 0xc2, 0xbe, 0x6c, 0x71, 0x62, 0x6d, 0x59, 0x8a, 0xf1, 0x4d, + 0xd3, 0x52, 0xae, 0x6f, 0x87, 0x21, 0x0f, 0x93, 0x16, 0xd7, 0xd3, 0x90, + 0xbb, 0x6a, 0xaa, 0xb9, 0x01, 0xdd, 0x2f, 0xba, 0x12, 0xea, 0xd8, 0x7d, + 0xd9, 0x05, 0xd7, 0x62, 0x5e, 0x64, 0x88, 0xc1, 0x7a, 0x21, 0x75, 0xe5, + 0x26, 0xec, 0x8b, 0xbc, 0xa0, 0x85, 0x12, 0x2b, 0xd1, 0x29, 0xcc, 0x30, + 0x4c, 0x71, 0x0c, 0x03, 0x6b, 0x60, 0x18, 0xf0, 0x25, 0x02, 0x19, 0x85, + 0x67, 0x54, 0x8a, 0x4b, 0x5a, 0x2f, 0x5a, 0x88, 0x62, 0x48, 0x6a, 0x2e, + 0xd8, 0xe1, 0x2a, 0x86, 0xcd, 0xe5, 0x7c, 0xc1, 0x29, 0x6c, 0x63, 0x54, + 0x10, 0xd6, 0xb3, 0x34, 0x88, 0xde, 0xcd, 0x05, 0xe3, 0x2f, 0x61, 0xf5, + 0x38, 0xf4, 0x97, 0xf7, 0x9c, 0xdf, 0x9f, 0x16, 0xaa, 0xe2, 0x4f, 0x0c, + 0x07, 0x2c, 0xe6, 0x10, 0x31, 0x5b, 0x6b, 0xbf, 0x7c, 0xb5, 0xe6, 0x1c, + 0x8d, 0xa0, 0x66, 0x69, 0x48, 0x02, 0x2e, 0xb9, 0x59, 0x19, 0x10, 0x7b, + 0xe7, 0x8e, 0x5f, 0x1f, 0x5f, 0x5c, 0x1c, 0x5f, 0xf0, 0x7a, 0x1f, 0x54, + 0xb1, 0xfa, 0x6f, 0x34, 0x32, 0xda, 0xa3, 0xd0, 0x59, 0x44, 0x58, 0xb3, + 0x84, 0xb3, 0x70, 0x42, 0x85, 0x8d, 0xda, 0x88, 0xcc, 0xcf, 0x2d, 0x19, + 0xfd, 0x62, 0x10, 0x86, 0x35, 0x11, 0xf1, 0x80, 0xce, 0x72, 0x3f, 0xe5, + 0x6b, 0x45, 0x20, 0xf7, 0x43, 0x61, 0x62, 0x23, 0xb2, 0x57, 0x73, 0xad, + 0xb5, 0x82, 0xab, 0xda, 0x74, 0xc7, 0x40, 0x2e, 0x1d, 0x68, 0x08, 0x57, + 0xa2, 0xde, 0x6b, 0x5f, 0x47, 0x1d, 0xf3, 0xbd, 0xe2, 0x03, 0xca, 0xaa, + 0x12, 0x56, 0xa2, 0x28, 0x97, 0x8b, 0x74, 0xe2, 0x8c, 0xbb, 0xf4, 0x39, + 0xc9, 0x7b, 0x91, 0x1c, 0xf1, 0xc2, 0x46, 0x0c, 0x67, 0xa2, 0xd9, 0x1e, + 0x42, 0xe3, 0x9a, 0x24, 0xd0, 0x7b, 0xd3, 0x18, 0x62, 0xfe, 0xa5, 0x40, + 0xa7, 0xe2, 0x83, 0xd7, 0xb2, 0xd3, 0x94, 0xf0, 0x13, 0x18, 0x15, 0x99, + 0x55, 0x58, 0xac, 0x40, 0xc8, 0x16, 0xd8, 0x74, 0x35, 0xf3, 0x81, 0x90, + 0xbe, 0x78, 0xe2, 0x05, 0x92, 0x52, 0xf2, 0xfd, 0xe8, 0xc7, 0x22, 0x1d, + 0xff, 0xe4, 0x6f, 0x0e, 0x84, 0x30, 0xfb, 0x58, 0x45, 0x89, 0x2d, 0xa0, + 0xc9, 0xeb, 0x42, 0xa9, 0xee, 0x2b, 0xc9, 0x60, 0xef, 0x86, 0xc7, 0x17, + 0xd1, 0xc1, 0x57, 0x8c, 0x64, 0xf5, 0xaf, 0xed, 0x2e, 0x3f, 0xa7, 0x37, + 0x83, 0xed, 0xad, 0xa6, 0x1f, 0x27, 0x66, 0xf8, 0xd6, 0x1a, 0x11, 0xe1, + 0xc6, 0xa6, 0x56, 0x29, 0x27, 0xc8, 0x13, 0xad, 0x6c, 0xe1, 0x46, 0xf4, + 0xc1, 0x4d, 0xfc, 0x98, 0x2d, 0xe4, 0x03, 0x16, 0x6e, 0xa2, 0xe0, 0x16, + 0x88, 0x03, 0xc2, 0xb6, 0x46, 0x47, 0x5f, 0x34, 0xd4, 0x4c, 0xd9, 0xa4, + 0x83, 0xa8, 0xfb, 0x26, 0xfb, 0x99, 0x04, 0x81, 0x78, 0xfb, 0xc9, 0x60, + 0x27, 0xda, 0xfc, 0x2e, 0x9d, 0xbf, 0x78, 0xf6, 0xe7, 0xe8, 0x64, 0xab, + 0x5b, 0x09, 0xf2, 0x14, 0xc8, 0xea, 0x51, 0x3c, 0xbf, 0x75, 0x3b, 0x76, + 0x86, 0x53, 0x2d, 0xa1, 0x2b, 0x06, 0x7c, 0x2a, 0x55, 0x18, 0xd7, 0xb6, + 0x88, 0xa4, 0x2a, 0x8d, 0x17, 0x8d, 0xbe, 0x75, 0xe0, 0x7b, 0xac, 0xd3, + 0xd3, 0x53, 0x13, 0x5e, 0xba, 0x17, 0xcf, 0x1a, 0x4d, 0x3c, 0x75, 0x6d, + 0xbc, 0x93, 0x36, 0x7e, 0x61, 0x13, 0x7b, 0x83, 0x9d, 0xbd, 0x68, 0xf3, + 0x6c, 0xb8, 0xbd, 0xe7, 0x5a, 0x68, 0x36, 0xb1, 0x87, 0x26, 0xf8, 0xa1, + 0xea, 0xcb, 0x4f, 0xb9, 0xff, 0x1f, 0x93, 0xf9, 0x4f, 0xd1, 0xe6, 0xf7, + 0xbb, 0xbb, 0xd4, 0xc0, 0x9f, 0xa3, 0x83, 0x93, 0xef, 0xa3, 0xa7, 0x03, + 0x6a, 0xec, 0x6d, 0x7c, 0xa7, 0xcd, 0x29, 0x5e, 0xd5, 0x10, 0x8d, 0xd0, + 0xf7, 0x8d, 0x36, 0x9e, 0xd5, 0xda, 0x38, 0x25, 0x3d, 0xf0, 0x81, 0xae, + 0x94, 0x9d, 0xc1, 0x93, 0xbd, 0x28, 0x7d, 0xf6, 0xd9, 0x73, 0x6b, 0x48, + 0xdb, 0xc0, 0xf7, 0x55, 0xdb, 0xa4, 0x64, 0x34, 0x93, 0x98, 0x73, 0xfc, + 0x40, 0xcc, 0x0c, 0x1c, 0x02, 0x30, 0xb1, 0x37, 0x71, 0x3e, 0x51, 0x72, + 0xe3, 0x02, 0x32, 0xb4, 0x53, 0x8a, 0x84, 0x96, 0xc0, 0x48, 0x49, 0x97, + 0xe6, 0x7e, 0x63, 0x38, 0xac, 0x8b, 0xda, 0xa3, 0x7f, 0x8e, 0xde, 0x0c, + 0x4f, 0x8e, 0x69, 0x46, 0x3b, 0x34, 0x34, 0xbf, 0x86, 0x32, 0x20, 0x7c, + 0x85, 0xc5, 0xa5, 0x55, 0xdd, 0xe0, 0xbc, 0x1f, 0xb4, 0x61, 0x32, 0xb6, + 0x44, 0x74, 0x31, 0x44, 0x65, 0x56, 0x14, 0xe8, 0xf7, 0x1d, 0xd1, 0x5a, + 0xff, 0xe0, 0x9a, 0x55, 0x06, 0xb9, 0x66, 0xd1, 0xf5, 0x37, 0xd9, 0x9c, + 0x8e, 0x49, 0x9e, 0xe5, 0x1c, 0xe6, 0xd1, 0xad, 0x48, 0x0a, 0xdf, 0x1c, + 0x1d, 0x4b, 0x4e, 0xde, 0x9b, 0x78, 0x4e, 0x2c, 0x92, 0xd1, 0x2b, 0x8a, + 0x5b, 0xf6, 0xba, 0x8b, 0xf3, 0x46, 0xde, 0x3f, 0x5d, 0xcd, 0x1f, 0x68, + 0x1f, 0x3f, 0x1d, 0xec, 0x32, 0x82, 0x1f, 0x6b, 0xb9, 0xaf, 0xdf, 0xd0, + 0xdf, 0xbb, 0x4f, 0xbb, 0x11, 0x7f, 0x55, 0xd5, 0xd8, 0xed, 0xbc, 0x6e, + 0x1c, 0x9e, 0x9d, 0x7d, 0x73, 0x22, 0x01, 0x18, 0x87, 0x6a, 0x44, 0x65, + 0xc1, 0xca, 0x69, 0xc1, 0xc2, 0x5c, 0x49, 0x5b, 0xf3, 0xf1, 0xe3, 0x70, + 0xbd, 0xdd, 0x26, 0xc9, 0x02, 0x90, 0x7b, 0x35, 0x8e, 0x50, 0x2a, 0x8b, + 0x96, 0x91, 0xb1, 0x20, 0x9d, 0x4e, 0xaa, 0xc8, 0x1b, 0x05, 0xa3, 0xa1, + 0x99, 0xc1, 0x76, 0xb4, 0x72, 0x79, 0xbf, 0xb1, 0x2f, 0x78, 0x89, 0x21, + 0xba, 0x28, 0x56, 0x33, 0x38, 0x4b, 0xc5, 0x7b, 0x7a, 0x51, 0x75, 0xdd, + 0xee, 0x30, 0x29, 0xfb, 0x32, 0xe8, 0x7d, 0xb5, 0xd1, 0x76, 0xd5, 0xe0, + 0xe4, 0xcc, 0x65, 0x0b, 0xc5, 0xdf, 0x85, 0xa1, 0x78, 0xb5, 0xe0, 0xc2, + 0x9c, 0x53, 0x57, 0x3b, 0x19, 0x85, 0x67, 0x13, 0xc4, 0x12, 0xbd, 0x3d, + 0x78, 0x73, 0xfc, 0xea, 0xdb, 0x83, 0xd3, 0x77, 0xc7, 0xf4, 0x0a, 0x23, + 0xd0, 0x6e, 0xfa, 0x78, 0x23, 0x8c, 0x71, 0x96, 0x8e, 0xb3, 0x29, 0xfb, + 0x94, 0xba, 0x7f, 0xee, 0x6e, 0x48, 0x78, 0x65, 0xd4, 0xe1, 0xb7, 0x76, + 0xe5, 0x35, 0xa2, 0x0b, 0xfe, 0x6b, 0x4f, 0xfe, 0xda, 0xfb, 0x73, 0x67, + 0xab, 0x32, 0xe9, 0x86, 0x56, 0xcc, 0xf4, 0x72, 0x2f, 0x71, 0x75, 0xa8, + 0x08, 0x83, 0x98, 0x5e, 0x59, 0x95, 0x8e, 0x79, 0x64, 0xec, 0x6a, 0xe3, + 0x67, 0x37, 0x47, 0xab, 0x50, 0xe7, 0xee, 0xf0, 0x4b, 0xaf, 0x20, 0x5c, + 0x74, 0x38, 0xe7, 0x49, 0xc5, 0x0d, 0x38, 0xab, 0xb9, 0x0d, 0x6b, 0x22, + 0x79, 0x58, 0x70, 0xf8, 0xd6, 0x66, 0x47, 0x7e, 0x79, 0x75, 0x74, 0x70, + 0x79, 0xcc, 0x2f, 0x58, 0xf7, 0x56, 0xc2, 0xdb, 0x22, 0x6f, 0x79, 0x3c, + 0x9b, 0x1d, 0xf9, 0xf0, 0x15, 0x4f, 0xa8, 0x23, 0xf5, 0x14, 0x04, 0x4c, + 0xb2, 0x36, 0xae, 0x6c, 0xae, 0x41, 0x8c, 0x41, 0x3a, 0x62, 0x61, 0x71, + 0x22, 0x9b, 0x1d, 0xf9, 0xae, 0xe3, 0xec, 0xb5, 0x5a, 0xa4, 0x56, 0x9d, + 0x93, 0x13, 0xc4, 0xe5, 0x36, 0xd2, 0x83, 0xa4, 0x2e, 0x94, 0xdf, 0x1f, + 0x75, 0x4d, 0x88, 0x85, 0x29, 0x00, 0xd4, 0x73, 0x1b, 0xaf, 0xd9, 0x93, + 0x6c, 0x53, 0xca, 0xb2, 0xdd, 0xbd, 0x27, 0x7f, 0xc6, 0x7a, 0xbe, 0xea, + 0x6c, 0xd3, 0xdd, 0xd0, 0xf9, 0x33, 0x77, 0x9d, 0x96, 0x41, 0x69, 0x19, + 0xed, 0x86, 0x75, 0x29, 0xa5, 0x28, 0x09, 0x52, 0xe1, 0x5d, 0x87, 0x2d, + 0x4c, 0xe6, 0x85, 0x05, 0xbd, 0x97, 0xec, 0x01, 0x4b, 0xa8, 0x37, 0xf7, + 0x3d, 0xf6, 0x0b, 0xe5, 0x11, 0xe7, 0x0e, 0x86, 0x55, 0xba, 0x0b, 0xef, + 0x8f, 0x9e, 0xbc, 0x2b, 0x73, 0xd4, 0x82, 0x37, 0xdc, 0xe7, 0x6c, 0x65, + 0x09, 0x06, 0xe8, 0x0b, 0xf2, 0xb8, 0xec, 0x59, 0x43, 0x2a, 0x1e, 0xa9, + 0x2d, 0xc7, 0x14, 0x11, 0x88, 0x04, 0xc4, 0x5a, 0x56, 0x90, 0x93, 0xc4, + 0xdf, 0x1f, 0x84, 0x39, 0xd8, 0x9d, 0x1d, 0x8f, 0x38, 0x53, 0xce, 0x45, + 0x53, 0x07, 0x5a, 0xb8, 0x5b, 0x7a, 0x3b, 0x7e, 0x69, 0x00, 0x9e, 0xc0, + 0x17, 0xa5, 0xac, 0x65, 0xe1, 0x6c, 0x46, 0xf0, 0x2d, 0xea, 0xb3, 0xd5, + 0x7d, 0xaa, 0xe5, 0x29, 0x60, 0x1a, 0xa2, 0xc2, 0x8b, 0x6e, 0x4c, 0xac, + 0x66, 0x9e, 0xe4, 0x8f, 0x86, 0x38, 0xb4, 0xb8, 0x9e, 0x30, 0xc5, 0x20, + 0xcd, 0x85, 0xdf, 0x19, 0x0c, 0x06, 0xbe, 0xe4, 0x09, 0x6f, 0x8b, 0x7a, + 0x9c, 0x80, 0x9e, 0x1e, 0x20, 0xbc, 0x61, 0x8d, 0x37, 0x21, 0xc8, 0x43, + 0x98, 0xde, 0xd2, 0x70, 0x17, 0xb5, 0x46, 0xb8, 0xa3, 0x11, 0xd8, 0x34, + 0xba, 0xda, 0x6d, 0xd7, 0xb2, 0x3e, 0x6f, 0xdb, 0x36, 0xe1, 0x91, 0xb1, + 0x89, 0xad, 0xb1, 0x88, 0x01, 0x43, 0xe0, 0xf8, 0x54, 0xe6, 0xd6, 0x82, + 0x29, 0x98, 0xa1, 0x09, 0xa4, 0xde, 0x2b, 0xb6, 0x44, 0x16, 0x4d, 0x87, + 0xa2, 0xc5, 0x7c, 0x98, 0xc9, 0x65, 0xf7, 0xc8, 0xe4, 0x44, 0xbe, 0x28, + 0x47, 0x7f, 0xcc, 0xc5, 0x34, 0x60, 0x37, 0x88, 0xc3, 0x37, 0xb6, 0x76, + 0x26, 0x62, 0x9a, 0x65, 0x7d, 0x19, 0x72, 0xbf, 0x66, 0xbf, 0x68, 0x3e, + 0x7b, 0x11, 0x2b, 0x0e, 0x18, 0x89, 0x6d, 0xd9, 0x0c, 0x4e, 0x2e, 0x9d, + 0xbc, 0x37, 0x93, 0x70, 0x8c, 0x57, 0x5f, 0x32, 0xc2, 0x2d, 0x41, 0xc5, + 0xb8, 0x87, 0xe6, 0x04, 0x3f, 0xe6, 0x1d, 0x1f, 0x5b, 0x8b, 0xce, 0x35, + 0x5e, 0x5b, 0x1b, 0x7f, 0x2b, 0x57, 0x59, 0x17, 0xad, 0xa8, 0x58, 0x93, + 0x25, 0xf7, 0xd6, 0xf3, 0xbd, 0x28, 0xbe, 0xe7, 0xca, 0x3b, 0x44, 0x83, + 0xe2, 0x26, 0x13, 0x8b, 0xcc, 0x69, 0x60, 0x57, 0x74, 0x33, 0xb4, 0xd2, + 0xd6, 0xb1, 0xaf, 0x6d, 0x6d, 0xe0, 0xb7, 0x02, 0x68, 0x67, 0x06, 0xbc, + 0x14, 0xa5, 0x53, 0x18, 0x80, 0x4c, 0x05, 0x75, 0x53, 0xcd, 0x79, 0xe4, + 0xc4, 0xa2, 0x87, 0x4a, 0x37, 0x29, 0xa2, 0x01, 0xd9, 0xc6, 0x21, 0x51, + 0x14, 0xb6, 0x5a, 0x52, 0xd7, 0xdc, 0x3a, 0x71, 0xde, 0x68, 0x98, 0x9b, + 0x58, 0x9e, 0x9e, 0x67, 0xf3, 0xbe, 0xab, 0xa5, 0xe4, 0x22, 0xae, 0xf2, + 0xf4, 0xfa, 0x5a, 0x34, 0xb6, 0xa8, 0x3e, 0xb5, 0x76, 0x22, 0x3b, 0xe5, + 0x55, 0xe1, 0x90, 0xcd, 0xd5, 0xba, 0xd5, 0xbc, 0x74, 0x35, 0x5b, 0xd5, + 0xe2, 0x52, 0x21, 0x66, 0xf3, 0x40, 0xca, 0xbe, 0x95, 0xa8, 0x79, 0x83, + 0x34, 0x4b, 0x36, 0x7b, 0x55, 0x3d, 0xc6, 0x67, 0x17, 0xcc, 0xc4, 0x0a, + 0xb7, 0xe5, 0xdd, 0xc2, 0x6d, 0x3a, 0x00, 0x74, 0x7c, 0xbc, 0xc9, 0x84, + 0xed, 0xca, 0x33, 0xbe, 0x8a, 0xef, 0x5d, 0xb0, 0x93, 0x20, 0x0a, 0x8f, + 0x62, 0xaf, 0x71, 0x6d, 0x44, 0x15, 0xeb, 0x6e, 0x81, 0x1a, 0xdd, 0xca, + 0x87, 0xb2, 0xbb, 0xc4, 0xa3, 0x38, 0x79, 0x03, 0xa3, 0x07, 0xde, 0xd3, + 0xd3, 0xef, 0x98, 0x49, 0xcd, 0x9d, 0xeb, 0xf8, 0x15, 0x26, 0x59, 0x5b, + 0x95, 0x41, 0x14, 0x34, 0x29, 0x66, 0x92, 0x2c, 0x64, 0xf1, 0x32, 0x36, + 0xf5, 0x52, 0x5b, 0x8b, 0x1a, 0xcb, 0x8f, 0x1c, 0xf1, 0x40, 0x35, 0x11, + 0xcc, 0x5c, 0xa5, 0xaa, 0xc2, 0x45, 0xc6, 0x79, 0x6f, 0xaf, 0xcd, 0xb2, + 0xe3, 0x36, 0xa9, 0x83, 0x94, 0x93, 0x91, 0x12, 0x01, 0x68, 0x80, 0x05, + 0x3a, 0xe7, 0xb0, 0x3f, 0x98, 0xc6, 0x1c, 0xb2, 0x92, 0x49, 0x2c, 0x00, + 0xb6, 0x0c, 0x44, 0x0d, 0x43, 0x5a, 0x8d, 0xa7, 0x36, 0x8e, 0x9f, 0x8b, + 0xcd, 0x10, 0x5a, 0x03, 0x04, 0x1f, 0x37, 0x43, 0x54, 0x82, 0xa0, 0xdc, + 0xb1, 0x31, 0xf7, 0xc7, 0xd3, 0x2f, 0x47, 0x95, 0x33, 0xfa, 0xa1, 0x23, + 0x7b, 0x7e, 0x71, 0xf6, 0xd5, 0xc5, 0xf1, 0x70, 0x18, 0xbd, 0x39, 0xbe, + 0x14, 0x95, 0xff, 0x52, 0xe2, 0xe0, 0x04, 0x88, 0x19, 0x6e, 0x06, 0x43, + 0x83, 0xb0, 0x58, 0x13, 0xb3, 0x27, 0x00, 0x39, 0x36, 0x63, 0x17, 0x1a, + 0x44, 0x39, 0xa8, 0xf3, 0x53, 0x0d, 0x9f, 0xbb, 0x81, 0xa1, 0x1f, 0xc1, + 0x4c, 0xf0, 0x44, 0x3a, 0xbb, 0xb9, 0xb7, 0xa6, 0x42, 0x46, 0x96, 0xf0, + 0xa6, 0x1b, 0xe3, 0x5c, 0xde, 0x7a, 0xce, 0xb7, 0x37, 0xfd, 0xc4, 0xf4, + 0x7e, 0x1f, 0x5d, 0x5a, 0x61, 0xf2, 0xdf, 0x93, 0x1a, 0xac, 0xf4, 0xf1, + 0xfb, 0xe8, 0x7b, 0x6a, 0x73, 0x42, 0xab, 0xae, 0xc5, 0x26, 0x87, 0x28, + 0x28, 0xe2, 0x8b, 0xb6, 0xa0, 0xdc, 0x45, 0x58, 0x48, 0x68, 0x99, 0xe7, + 0x1f, 0x28, 0x6e, 0x8c, 0x84, 0x79, 0x01, 0x50, 0xd0, 0x60, 0x3a, 0xd7, + 0x33, 0xbf, 0x0d, 0x50, 0xd0, 0xd3, 0xe4, 0xaa, 0x84, 0x40, 0xc2, 0xdd, + 0x51, 0x73, 0x3b, 0x0c, 0xd5, 0xb8, 0xfb, 0x86, 0x3f, 0xda, 0x89, 0x9e, + 0x7c, 0xf6, 0x7c, 0xe7, 0x33, 0xf9, 0xd5, 0xfe, 0x7d, 0xf1, 0x74, 0x47, + 0x21, 0x4f, 0xe9, 0xaf, 0xa7, 0xfb, 0x4f, 0x77, 0xf7, 0x19, 0x8a, 0x69, + 0x67, 0x7f, 0x87, 0xfe, 0xff, 0xa9, 0x7e, 0xc2, 0x78, 0x53, 0x2f, 0xf6, + 0x3e, 0xfb, 0x14, 0x61, 0x30, 0x4c, 0x1f, 0x53, 0xea, 0xa4, 0x5f, 0x66, + 0x7d, 0xe0, 0x55, 0x40, 0x08, 0xfa, 0x7d, 0xd5, 0x20, 0xc9, 0x7e, 0x75, + 0x2e, 0x1a, 0xc9, 0x13, 0x77, 0xa5, 0xa8, 0xcd, 0xb8, 0x2a, 0x69, 0xfc, + 0x61, 0xb9, 0x5c, 0x37, 0x0d, 0x7d, 0x5b, 0x2a, 0x96, 0x02, 0x00, 0xa6, + 0xf2, 0x0e, 0x89, 0x8c, 0x92, 0x43, 0x15, 0xbe, 0xfc, 0x4b, 0xba, 0xb6, + 0x5c, 0xc3, 0x0d, 0x20, 0xc8, 0xe8, 0x56, 0xe9, 0x7b, 0x63, 0x59, 0x42, + 0xa2, 0x91, 0xa0, 0x0c, 0x6b, 0xad, 0x68, 0xea, 0x2f, 0xed, 0x4f, 0x0c, + 0x58, 0xfc, 0x96, 0x52, 0x43, 0xd4, 0xec, 0xcd, 0xaa, 0xc7, 0xb6, 0xf5, + 0x55, 0x21, 0x9e, 0x0d, 0xbf, 0xfd, 0x7e, 0xa5, 0x82, 0x2a, 0xab, 0x0e, + 0x3f, 0x45, 0x6a, 0xd7, 0xb4, 0x4c, 0xb9, 0xd1, 0xdc, 0xbb, 0x45, 0xd8, + 0xde, 0xc7, 0x34, 0xe7, 0x67, 0x04, 0x0a, 0x76, 0x3b, 0xd7, 0x0f, 0x36, + 0x27, 0x95, 0x88, 0x36, 0x57, 0x18, 0xd5, 0x30, 0xc0, 0x5c, 0xf5, 0x44, + 0xbc, 0xea, 0x48, 0xb6, 0x2f, 0x6f, 0xa8, 0xf8, 0x59, 0x20, 0x33, 0x48, + 0x04, 0x85, 0xbb, 0x0c, 0xb7, 0xbd, 0x3c, 0x6f, 0x94, 0xdd, 0xe8, 0x8a, + 0xa9, 0x31, 0xe8, 0x4f, 0xfb, 0xc0, 0x79, 0x72, 0x87, 0xee, 0xd1, 0xa9, + 0xf9, 0xe0, 0x76, 0x57, 0xb9, 0x67, 0xd3, 0x05, 0x8b, 0xb7, 0x1d, 0x49, + 0xff, 0x1c, 0xe2, 0xc7, 0x5d, 0x73, 0xe1, 0x45, 0x84, 0xb2, 0x4d, 0x8a, + 0xda, 0xcc, 0xd0, 0x62, 0x0c, 0xc4, 0xbb, 0x65, 0x2c, 0xac, 0xff, 0x89, + 0x8b, 0xd7, 0xc2, 0xbd, 0xa6, 0xe0, 0xf3, 0xb1, 0x50, 0xfe, 0x34, 0x4c, + 0x2b, 0xab, 0xc0, 0xce, 0x87, 0x80, 0xb7, 0x1b, 0x52, 0x47, 0x99, 0x6e, + 0x5a, 0xba, 0x39, 0x82, 0x12, 0x65, 0xbf, 0xdb, 0xd8, 0x18, 0x9e, 0x1f, + 0x1f, 0x1f, 0x45, 0xa7, 0x27, 0x6f, 0x4e, 0x2e, 0x03, 0x81, 0xdc, 0x5d, + 0x24, 0x66, 0x70, 0x2d, 0xac, 0x4e, 0x4d, 0x75, 0x39, 0x3c, 0xc2, 0xa2, + 0xf4, 0x67, 0x57, 0xf9, 0x2c, 0xd1, 0x34, 0x86, 0x69, 0xfd, 0x3d, 0xa8, + 0xde, 0x00, 0xaa, 0x40, 0x2d, 0x11, 0x2f, 0xd0, 0x15, 0x24, 0xdc, 0x8c, + 0x5d, 0x45, 0xa3, 0xfe, 0x0f, 0x1a, 0xa0, 0x51, 0x95, 0x9c, 0x14, 0x28, + 0xce, 0x15, 0xac, 0xd2, 0xa0, 0xd6, 0xda, 0xa8, 0x78, 0x6d, 0x93, 0xa9, + 0x16, 0x4d, 0x75, 0x16, 0x3a, 0xc4, 0xeb, 0xdd, 0x27, 0x48, 0x88, 0x9d, + 0xa5, 0x02, 0x57, 0x1d, 0x06, 0x13, 0xbb, 0x0a, 0x31, 0x97, 0x99, 0xf0, + 0xf1, 0xb0, 0xc7, 0xb0, 0x78, 0x97, 0x45, 0xd2, 0x5a, 0x5f, 0x61, 0x59, + 0xa8, 0x27, 0x3b, 0x2e, 0x5f, 0x60, 0x01, 0x9e, 0xa3, 0xa2, 0x3e, 0x77, + 0xb6, 0x1b, 0x91, 0x3c, 0xb2, 0x64, 0xa9, 0x3e, 0x5f, 0xce, 0x1b, 0xd7, + 0xdd, 0x0f, 0xf2, 0x2e, 0xcd, 0xff, 0xf9, 0x0e, 0xae, 0xb7, 0xab, 0x38, + 0xef, 0x93, 0xe4, 0xb5, 0xea, 0x9b, 0x71, 0x55, 0x28, 0x42, 0x03, 0x8d, + 0xc5, 0xf4, 0x93, 0xf8, 0x7a, 0x26, 0x35, 0x69, 0xd1, 0x27, 0x7d, 0x64, + 0x70, 0x49, 0x4e, 0xf5, 0x00, 0xf0, 0xd4, 0x7b, 0x11, 0xaa, 0x71, 0xbb, + 0xd0, 0x67, 0x91, 0x75, 0x3c, 0x88, 0xa0, 0xed, 0xa2, 0xe7, 0x51, 0xa8, + 0xf0, 0x9a, 0xa9, 0x73, 0x28, 0xe5, 0x69, 0xea, 0x5c, 0x9a, 0xa2, 0xf5, + 0x2c, 0xda, 0xfd, 0x8c, 0xe7, 0xf1, 0x71, 0xf3, 0xe1, 0xba, 0x1d, 0x16, + 0xc5, 0x26, 0xea, 0x42, 0xe6, 0x77, 0x53, 0xf2, 0x12, 0x80, 0xcc, 0x2e, + 0xab, 0x6b, 0xd1, 0xb0, 0x88, 0xd6, 0x63, 0xfd, 0x44, 0x5d, 0xe9, 0xb0, + 0x4c, 0xc1, 0xb7, 0x2d, 0x12, 0x12, 0x2a, 0x54, 0xca, 0xba, 0xb0, 0xad, + 0x55, 0xa2, 0xf5, 0xba, 0xb9, 0xcf, 0x98, 0xc3, 0x32, 0xb0, 0x75, 0x84, + 0x68, 0xed, 0x3e, 0x9d, 0x40, 0xaa, 0x36, 0x23, 0x00, 0xe8, 0x4f, 0x88, + 0x4f, 0x82, 0xa4, 0xe1, 0xba, 0x84, 0xcf, 0xd3, 0x8d, 0x4c, 0x05, 0x18, + 0x5e, 0xd6, 0x0c, 0xc6, 0x85, 0x4d, 0xc8, 0x0f, 0x5c, 0x72, 0xa6, 0xea, + 0x1a, 0x60, 0xd6, 0xdc, 0xf1, 0xbd, 0x70, 0xe0, 0x7e, 0x59, 0x4e, 0xcd, + 0xae, 0xe0, 0x6b, 0x4a, 0x54, 0xe7, 0xcc, 0xc9, 0xfc, 0xc1, 0xb4, 0x77, + 0x77, 0x48, 0x7e, 0x9d, 0x66, 0xf5, 0xe2, 0x73, 0x4d, 0xa5, 0x14, 0xd3, + 0xea, 0x63, 0x75, 0x76, 0x77, 0xbe, 0x59, 0xbf, 0xea, 0x00, 0xa4, 0x7d, + 0xf4, 0xe5, 0xbd, 0xa7, 0x8f, 0x6c, 0xda, 0x59, 0xee, 0xaa, 0x09, 0x79, + 0xa0, 0x11, 0xef, 0x80, 0x69, 0x6c, 0x1b, 0x11, 0x7e, 0x72, 0x1d, 0xa3, + 0xdc, 0xfc, 0x23, 0xa3, 0xb7, 0x04, 0x8d, 0xda, 0x50, 0xde, 0x68, 0x38, + 0xb6, 0x7c, 0x59, 0xb0, 0x85, 0x6c, 0x01, 0xb8, 0x21, 0xaf, 0xc6, 0xba, + 0x94, 0x4e, 0xc9, 0xf1, 0x0e, 0xde, 0x16, 0xce, 0xd9, 0xab, 0x32, 0x09, + 0xa3, 0x9e, 0x3c, 0xb9, 0x5e, 0x4a, 0x12, 0x75, 0x26, 0x6a, 0x3f, 0x63, + 0x4f, 0xea, 0x79, 0x25, 0xde, 0xcc, 0x91, 0x43, 0x42, 0x4f, 0x60, 0xbc, + 0xe3, 0xd8, 0x44, 0x56, 0x11, 0x39, 0xea, 0x17, 0x03, 0xdb, 0x67, 0xc7, + 0xec, 0x0c, 0x03, 0x37, 0x90, 0xe3, 0x15, 0x96, 0xb5, 0x12, 0xe8, 0xa7, + 0x01, 0x32, 0x14, 0x85, 0x50, 0x1c, 0xb3, 0xe7, 0xbc, 0x2e, 0x76, 0x8a, + 0x95, 0xe2, 0x21, 0x40, 0x03, 0x3d, 0xa5, 0x5a, 0xb4, 0xe4, 0xba, 0x62, + 0x8e, 0x5f, 0x58, 0x0a, 0xaa, 0x40, 0xe2, 0xb2, 0xdd, 0xff, 0xf0, 0xec, + 0xed, 0xeb, 0x93, 0xaf, 0x1c, 0xb0, 0x85, 0x30, 0xf1, 0x65, 0x99, 0xb1, + 0x5d, 0x53, 0x8c, 0x86, 0xae, 0xe0, 0x98, 0x73, 0x78, 0x6b, 0x55, 0x11, + 0x0d, 0xbb, 0x25, 0xf6, 0xf4, 0x3e, 0xfc, 0x00, 0x0c, 0x64, 0xfe, 0x84, + 0x6d, 0xe5, 0x92, 0x3d, 0x5e, 0x6c, 0x79, 0xcb, 0x43, 0x0d, 0x7a, 0x47, + 0xd2, 0x33, 0xe2, 0xbc, 0x5c, 0x2e, 0x5c, 0xf4, 0x60, 0x50, 0x95, 0x44, + 0xc1, 0x32, 0xf9, 0x56, 0xe0, 0xea, 0xd8, 0xcb, 0x85, 0xb0, 0x26, 0x89, + 0x7a, 0xac, 0x1a, 0x76, 0xe5, 0x0e, 0x60, 0xcb, 0x82, 0xa6, 0xdb, 0xeb, + 0x05, 0xd0, 0x08, 0xc9, 0x99, 0x32, 0xf6, 0x57, 0x18, 0x28, 0x6f, 0xae, + 0x1c, 0x2e, 0x49, 0x26, 0x13, 0xb5, 0x82, 0x52, 0x33, 0xd1, 0xcc, 0x78, + 0xde, 0x52, 0xa7, 0xf6, 0x07, 0x57, 0xb1, 0x57, 0xc3, 0x7e, 0xbd, 0xab, + 0xa8, 0x70, 0xe5, 0x57, 0x5d, 0x68, 0x92, 0x0c, 0x16, 0x21, 0x84, 0x45, + 0x4f, 0x5c, 0x9e, 0xf8, 0xe4, 0x15, 0x7b, 0x68, 0xf6, 0x07, 0x28, 0xea, + 0x89, 0xf8, 0x9d, 0xb0, 0xde, 0x96, 0x72, 0x49, 0x0f, 0xec, 0x7a, 0x72, + 0x15, 0xa4, 0x94, 0x49, 0x88, 0xa0, 0x11, 0x9d, 0x98, 0x8b, 0xd9, 0xd6, + 0xd2, 0xfd, 0xa4, 0xdb, 0x2f, 0x56, 0xb3, 0x51, 0x36, 0xb5, 0x8c, 0x0b, + 0x97, 0x54, 0x6d, 0x0f, 0x95, 0x34, 0x0d, 0xc4, 0x0c, 0x4a, 0x81, 0x45, + 0x74, 0x1d, 0x58, 0x28, 0x7d, 0x98, 0x94, 0x1f, 0xbf, 0x54, 0x12, 0x80, + 0xa7, 0xc8, 0x66, 0xe1, 0x32, 0xfc, 0x93, 0xf9, 0x78, 0x9a, 0x29, 0x55, + 0x73, 0x62, 0x2c, 0x56, 0xaa, 0x3a, 0x75, 0xf6, 0xfd, 0x65, 0x4b, 0x36, + 0x76, 0x00, 0x25, 0x9c, 0xc4, 0x1d, 0x36, 0x0e, 0x7f, 0x67, 0x13, 0xe4, + 0xb7, 0xe5, 0x0b, 0x0d, 0xc7, 0x37, 0x68, 0x04, 0x6a, 0x48, 0x60, 0xc5, + 0x69, 0xa8, 0x7f, 0x11, 0xdb, 0xa2, 0x78, 0x00, 0x7f, 0xb0, 0xce, 0xed, + 0xd1, 0xda, 0xd2, 0x13, 0x3d, 0xc5, 0xf9, 0xb5, 0x62, 0x0e, 0xa9, 0x53, + 0x0d, 0x4a, 0xa2, 0x03, 0x7b, 0x77, 0x36, 0x4a, 0x16, 0x4a, 0x5c, 0xb8, + 0x0c, 0xc4, 0xa7, 0xa5, 0x24, 0xf5, 0x69, 0xfa, 0x93, 0x58, 0x27, 0x1d, + 0x21, 0x06, 0x1c, 0xe7, 0x13, 0x17, 0x92, 0x12, 0xfb, 0xbb, 0xcc, 0x50, + 0xa8, 0xbd, 0xa9, 0x56, 0x2f, 0xb3, 0xe0, 0x35, 0xb6, 0xe7, 0x41, 0x13, + 0x4e, 0xd4, 0x86, 0x22, 0x5d, 0x41, 0x96, 0x60, 0xc0, 0x2d, 0x64, 0xfd, + 0x24, 0x85, 0x6f, 0x42, 0xbe, 0x7f, 0xa5, 0x29, 0xe6, 0x74, 0x9e, 0x15, + 0x34, 0x40, 0xc1, 0x90, 0x3e, 0xdb, 0x51, 0x4b, 0x5c, 0xa9, 0x71, 0xaa, + 0x45, 0x74, 0x70, 0x71, 0x4c, 0x92, 0xed, 0xf5, 0x1c, 0x49, 0xe1, 0x3c, + 0xc2, 0x52, 0xf7, 0x07, 0x82, 0x35, 0xaf, 0x82, 0x9e, 0x0f, 0xee, 0xf0, + 0x3e, 0x78, 0x93, 0x89, 0x49, 0xe3, 0x03, 0xe8, 0x90, 0xb9, 0x00, 0x34, + 0x26, 0xb9, 0xb1, 0x01, 0x13, 0x82, 0xeb, 0x70, 0x76, 0xb7, 0x90, 0x14, + 0x7b, 0x4b, 0xa8, 0xab, 0xcc, 0x40, 0x09, 0xcf, 0x1b, 0x6c, 0x3d, 0x44, + 0x23, 0xb4, 0xb5, 0xc6, 0xa9, 0xf6, 0x39, 0x08, 0x7f, 0x33, 0x9c, 0x31, + 0xed, 0xab, 0xe2, 0x01, 0xf5, 0xe4, 0xd4, 0x6b, 0xb7, 0x1e, 0xfd, 0x0d, + 0xf7, 0x0c, 0xcb, 0x22, 0x75, 0xb9, 0x20, 0x71, 0xa1, 0xf5, 0x62, 0xc8, + 0x9e, 0x04, 0xc2, 0xaf, 0xe4, 0xe3, 0x71, 0x70, 0xb5, 0xd8, 0xa8, 0x59, + 0xf8, 0x89, 0x8b, 0xc4, 0xaa, 0x47, 0x41, 0x1d, 0x98, 0xe8, 0x59, 0x65, + 0xaa, 0xe0, 0x38, 0xe1, 0x11, 0x03, 0x6d, 0xdc, 0x8a, 0x00, 0x10, 0xf2, + 0xa7, 0x56, 0x33, 0xef, 0x27, 0x6e, 0xb6, 0x7e, 0x0c, 0xee, 0x4b, 0xfe, + 0xe8, 0x95, 0xc3, 0x1d, 0xe2, 0x51, 0x0c, 0xb8, 0x23, 0xb0, 0x54, 0xb8, + 0x4f, 0xf9, 0x17, 0x7c, 0x8c, 0x80, 0x37, 0x43, 0x6f, 0xab, 0x60, 0x87, + 0x28, 0xbc, 0x7d, 0x38, 0x10, 0xf1, 0xf1, 0x81, 0x43, 0x8f, 0x42, 0xd1, + 0x38, 0xa8, 0xe8, 0xc4, 0xa6, 0x1c, 0xce, 0xe0, 0xb5, 0x03, 0x5f, 0x24, + 0x95, 0x0a, 0x50, 0x2e, 0x45, 0xa8, 0xd3, 0xef, 0xd0, 0x5a, 0x74, 0xa7, + 0x53, 0xcf, 0xf0, 0xed, 0x31, 0xde, 0x55, 0x64, 0xd3, 0x79, 0x81, 0x49, + 0x79, 0x17, 0x63, 0x67, 0xaf, 0x2a, 0xb9, 0x0d, 0x5c, 0x7b, 0x84, 0x53, + 0x7f, 0x1c, 0xf6, 0x0b, 0xf2, 0x43, 0x10, 0x2e, 0x70, 0x97, 0x16, 0xe6, + 0x87, 0x24, 0xda, 0x1e, 0x6b, 0x6c, 0x84, 0x24, 0x52, 0x27, 0xe5, 0x38, + 0x58, 0xca, 0x64, 0x7c, 0x93, 0x49, 0x38, 0x2d, 0x2d, 0x5a, 0x90, 0x76, + 0xd9, 0x89, 0xfe, 0x4b, 0x69, 0xe0, 0x1b, 0x9f, 0xad, 0xc7, 0x84, 0x30, + 0x10, 0x54, 0xad, 0x81, 0x27, 0x88, 0xe3, 0xef, 0x2f, 0x2f, 0x0e, 0xa2, + 0xaf, 0x8f, 0x0f, 0x8e, 0x8e, 0x2f, 0x86, 0xb5, 0x4b, 0x5f, 0xa3, 0x40, + 0x44, 0x42, 0x63, 0x7b, 0x30, 0x44, 0x63, 0xcb, 0xf9, 0xd7, 0x80, 0x7d, + 0xe3, 0x7a, 0xf1, 0x0a, 0x07, 0x89, 0xce, 0x07, 0x2b, 0x44, 0xe2, 0x38, + 0x00, 0x82, 0x62, 0x01, 0x66, 0xe3, 0xda, 0xd0, 0x32, 0xc7, 0xce, 0x7a, + 0x1e, 0xa6, 0xca, 0x78, 0x38, 0x27, 0x7f, 0x99, 0x4c, 0x32, 0xcb, 0x02, + 0xac, 0xee, 0xdc, 0xd7, 0x3e, 0xe1, 0x3a, 0x60, 0x5b, 0x7a, 0xc9, 0xa8, + 0x01, 0xb1, 0xf3, 0x7d, 0x9f, 0xfa, 0xed, 0xd3, 0xe2, 0xf7, 0x19, 0x71, + 0x6b, 0x95, 0x14, 0x9d, 0x9a, 0x35, 0xb0, 0xda, 0xfd, 0x86, 0x14, 0xf3, + 0x6c, 0x9c, 0xa4, 0xaf, 0x5b, 0x5b, 0xe2, 0xd3, 0x35, 0xe5, 0x2a, 0x08, + 0x75, 0x0d, 0x02, 0x97, 0x6a, 0x20, 0x24, 0xeb, 0x09, 0x6a, 0xe4, 0xb5, + 0x68, 0x9c, 0x92, 0x57, 0x33, 0x35, 0x2c, 0x0c, 0x03, 0xd1, 0x29, 0x40, + 0xd6, 0x49, 0x4b, 0xbd, 0xd4, 0x61, 0x17, 0x31, 0x38, 0x48, 0x1a, 0x96, + 0x3e, 0x14, 0xde, 0x0f, 0xf0, 0x85, 0x68, 0x80, 0x7e, 0x51, 0x71, 0x95, + 0xaa, 0x5d, 0x54, 0x0b, 0xf1, 0x68, 0x73, 0x3c, 0x06, 0x47, 0xf3, 0x16, + 0xd7, 0xcf, 0x5d, 0x1a, 0x08, 0xb8, 0xbe, 0x2b, 0xc1, 0x60, 0xac, 0xd4, + 0xc3, 0xd4, 0xc9, 0xe1, 0x66, 0xb2, 0xf1, 0x26, 0xaf, 0x06, 0x49, 0x40, + 0x21, 0x31, 0xa3, 0x60, 0x09, 0x02, 0xc7, 0xdd, 0x73, 0x49, 0xf4, 0x75, + 0x56, 0xe0, 0x2e, 0x68, 0x3e, 0xce, 0x97, 0x7c, 0xdb, 0xf2, 0xe3, 0x0d, + 0x75, 0x75, 0x39, 0xc8, 0x3b, 0x60, 0x44, 0x82, 0x7d, 0x9d, 0x1f, 0x5c, + 0x7e, 0x0d, 0x47, 0x2b, 0x48, 0xf8, 0x08, 0x48, 0x0f, 0xe6, 0x5e, 0x6b, + 0xe6, 0x62, 0x39, 0x05, 0x4e, 0xe4, 0x5f, 0xc3, 0xee, 0x32, 0x79, 0x12, + 0x8e, 0x3c, 0x98, 0x28, 0x01, 0x05, 0x94, 0xaa, 0xe1, 0xb1, 0x5a, 0x46, + 0x07, 0x51, 0xef, 0x2e, 0xd1, 0xce, 0x85, 0x5d, 0x76, 0x25, 0x13, 0xbd, + 0x2b, 0x73, 0x02, 0xd1, 0xb3, 0x30, 0xc7, 0x1a, 0x4f, 0x88, 0xa4, 0x88, + 0x2f, 0xae, 0x34, 0xc5, 0xb6, 0x47, 0x7b, 0xda, 0x0e, 0x8d, 0x15, 0x1c, + 0xe9, 0x2f, 0x66, 0xab, 0x41, 0x13, 0x37, 0x24, 0xfa, 0x72, 0x59, 0x56, + 0xd9, 0x4a, 0x0d, 0xcf, 0xd1, 0x49, 0x96, 0x79, 0x96, 0x95, 0x55, 0x44, + 0x44, 0xac, 0x8e, 0x9c, 0x68, 0xc1, 0x40, 0x93, 0xb1, 0x70, 0x53, 0x73, + 0x95, 0xbb, 0x43, 0xc1, 0x30, 0x1e, 0x15, 0xd9, 0x74, 0x59, 0x06, 0x81, + 0xd7, 0xbf, 0x6c, 0xcc, 0xc1, 0xa0, 0x37, 0x4f, 0x06, 0x89, 0x11, 0x14, + 0x47, 0x0e, 0xe7, 0x31, 0x69, 0xfa, 0x5c, 0xf1, 0x96, 0xfd, 0x8e, 0x79, + 0x36, 0xaf, 0x56, 0x7a, 0x41, 0x8c, 0xf7, 0xd6, 0xc6, 0xc6, 0xd0, 0x36, + 0x9b, 0xc1, 0xf7, 0x9a, 0x9b, 0x0e, 0x9c, 0x08, 0x20, 0xfc, 0x89, 0xdf, + 0x60, 0x4c, 0xbf, 0x18, 0x1e, 0x52, 0x22, 0x7b, 0x0a, 0x16, 0x2e, 0x7b, + 0x9c, 0x16, 0xd5, 0x49, 0xe1, 0x2b, 0xe7, 0xb9, 0xb0, 0xc4, 0xb2, 0xcb, + 0xcc, 0x40, 0x81, 0xd5, 0x73, 0xe7, 0x09, 0xa2, 0x92, 0x9a, 0xde, 0x8a, + 0x98, 0xc9, 0x97, 0x80, 0x82, 0x73, 0xf9, 0xa8, 0x5c, 0x1e, 0xe4, 0xf6, + 0x7f, 0x6f, 0x47, 0x3d, 0x81, 0xb9, 0x69, 0x01, 0x1b, 0x59, 0x46, 0xff, + 0x0f, 0x42, 0xb0, 0x14, 0xac, 0x90, 0xdb, 0xac, 0x21, 0xfc, 0x0d, 0x48, + 0x85, 0xba, 0xc9, 0xc7, 0x9e, 0xfa, 0x49, 0x3a, 0x48, 0xee, 0x59, 0x7f, + 0x31, 0x1d, 0x81, 0xbf, 0xb0, 0x2c, 0x53, 0x0f, 0x1c, 0x03, 0xbc, 0x8b, + 0x2b, 0x67, 0xd5, 0xe3, 0x22, 0x59, 0x52, 0x32, 0x4a, 0xc4, 0x7a, 0x54, + 0x4c, 0x30, 0x0f, 0xea, 0x46, 0x54, 0xd1, 0xdb, 0x8b, 0xa8, 0xc8, 0xe4, + 0xa7, 0x65, 0x1b, 0x69, 0x8c, 0x97, 0x92, 0xbf, 0xaa, 0x51, 0x5a, 0x9d, + 0x46, 0x4b, 0xb6, 0x59, 0xdc, 0xa9, 0x84, 0xd5, 0x99, 0x63, 0xd2, 0xc6, + 0x68, 0x42, 0x00, 0xfb, 0x2d, 0x01, 0x7c, 0x86, 0xcb, 0xa6, 0xf0, 0x45, + 0x60, 0x91, 0xac, 0xcd, 0x15, 0x96, 0x4c, 0x91, 0xb1, 0x1b, 0xd5, 0x12, + 0x38, 0xdc, 0x46, 0xf9, 0xd1, 0xeb, 0xd5, 0x8f, 0x84, 0x78, 0xf8, 0xe8, + 0xee, 0xe3, 0xb4, 0x0c, 0x25, 0x02, 0x9b, 0x11, 0x69, 0x78, 0x0a, 0xcd, + 0x3f, 0x5a, 0x55, 0x42, 0x53, 0x7c, 0xdc, 0xe6, 0x35, 0xe7, 0x77, 0xa8, + 0x45, 0x4a, 0xb1, 0x44, 0x60, 0xfe, 0xba, 0x49, 0x35, 0xba, 0x54, 0x16, + 0xdd, 0xcc, 0x81, 0x6c, 0xcf, 0x80, 0x79, 0x8f, 0x43, 0x0b, 0xbc, 0x77, + 0xd5, 0x05, 0x40, 0x0c, 0x9a, 0xa7, 0x65, 0xe0, 0x50, 0xf7, 0xf4, 0x06, + 0x39, 0x09, 0x33, 0xc9, 0xb1, 0x2a, 0x2e, 0xdc, 0xf9, 0xa3, 0xba, 0x0e, + 0xfb, 0xe3, 0x28, 0xd6, 0x79, 0xe4, 0xd7, 0xa3, 0x90, 0xab, 0x64, 0x6f, + 0x17, 0x2a, 0xa9, 0x04, 0x6e, 0x00, 0xc4, 0xce, 0x4a, 0x77, 0x55, 0x2a, + 0xad, 0x04, 0xeb, 0x8e, 0xda, 0xa0, 0xc0, 0x48, 0xb4, 0x24, 0x7b, 0xf5, + 0x33, 0x8b, 0x44, 0x18, 0x78, 0x9c, 0x2a, 0x25, 0x5e, 0x24, 0x71, 0xbb, + 0x28, 0xf3, 0xe5, 0xb8, 0x02, 0x58, 0x05, 0x62, 0xa8, 0xf8, 0xe7, 0xdd, + 0xf2, 0x66, 0xa1, 0x56, 0xbf, 0x19, 0x57, 0xd2, 0x58, 0xf4, 0xc9, 0xb0, + 0x8b, 0x2d, 0x29, 0x79, 0xaa, 0x05, 0x9f, 0xa1, 0x9d, 0xd0, 0xf8, 0x1d, + 0x81, 0xf5, 0xcf, 0x5d, 0x12, 0x7d, 0x05, 0xf7, 0x4b, 0x52, 0x12, 0x82, + 0x5b, 0x57, 0x45, 0x30, 0x88, 0x1c, 0x79, 0xa4, 0x08, 0x64, 0x10, 0x68, + 0xd8, 0x58, 0xb9, 0xe1, 0x50, 0xc2, 0xa8, 0xbb, 0xbe, 0xaf, 0x71, 0x4a, + 0xfd, 0x6d, 0xd3, 0x42, 0x5a, 0x91, 0x01, 0x57, 0xc2, 0xa2, 0xf0, 0x48, + 0x63, 0xb5, 0x58, 0xd5, 0x64, 0x4a, 0x53, 0x76, 0x92, 0xa1, 0x9c, 0xc4, + 0x99, 0xae, 0xdf, 0xc0, 0x55, 0x1d, 0xb5, 0xd2, 0xae, 0x35, 0x41, 0xa2, + 0x79, 0x2b, 0x9e, 0x0b, 0x0a, 0x49, 0x83, 0x88, 0x8e, 0xcc, 0x9a, 0x0a, + 0x66, 0x83, 0x05, 0x63, 0x9d, 0xc6, 0x36, 0xe9, 0xe4, 0xdc, 0x75, 0x41, + 0x43, 0xe0, 0x19, 0x77, 0xa7, 0xc9, 0x4e, 0x37, 0xa8, 0xc1, 0xb1, 0x29, + 0x51, 0xff, 0x19, 0xf4, 0x1e, 0xb6, 0x1c, 0x62, 0x82, 0x62, 0xb7, 0xe0, + 0x08, 0xb7, 0xad, 0x96, 0xa1, 0x50, 0x13, 0xbf, 0x74, 0x30, 0xbb, 0x2f, + 0xf6, 0x06, 0xbb, 0xcf, 0x3f, 0x1b, 0xec, 0x0c, 0x76, 0x77, 0x98, 0xb3, + 0xf0, 0x50, 0x82, 0xc1, 0xc9, 0xba, 0xb4, 0x74, 0x55, 0x79, 0xaf, 0xd9, + 0xe7, 0xdb, 0xe3, 0xcb, 0xef, 0xce, 0x2e, 0xbe, 0x89, 0x4e, 0xde, 0x5e, + 0x1e, 0x5f, 0xbc, 0x3e, 0x38, 0xfc, 0x58, 0xe8, 0xe1, 0xd0, 0x60, 0x1d, + 0x14, 0x5d, 0x4c, 0xfc, 0xc2, 0x34, 0xad, 0x82, 0x7e, 0xcd, 0x92, 0xf2, + 0x66, 0x67, 0x7f, 0xf7, 0x51, 0xbc, 0xd2, 0x16, 0xc3, 0xa0, 0x7f, 0xdf, + 0x26, 0xb5, 0xcb, 0x93, 0x5a, 0xdf, 0x8a, 0x43, 0x41, 0x1b, 0x4a, 0x80, + 0x95, 0x0b, 0xce, 0x05, 0x83, 0x47, 0x01, 0x86, 0x74, 0x94, 0xc7, 0x66, + 0x92, 0x1a, 0x09, 0x68, 0xa2, 0x64, 0xd4, 0x2a, 0xbe, 0x8b, 0x06, 0xa1, + 0x2b, 0xbb, 0xe5, 0x18, 0xe5, 0x65, 0x3a, 0x2d, 0xd5, 0x90, 0x22, 0x18, + 0x88, 0x13, 0x08, 0x77, 0xc6, 0x90, 0xad, 0x08, 0x31, 0x6a, 0x10, 0xa3, + 0x08, 0x99, 0x14, 0x21, 0x9e, 0xb8, 0x44, 0x11, 0x07, 0x3c, 0x50, 0x49, + 0xb7, 0xc1, 0x58, 0xab, 0x35, 0x2a, 0xc3, 0x18, 0xda, 0x1a, 0x00, 0x61, + 0x61, 0xb1, 0xcd, 0x98, 0x58, 0xc5, 0x28, 0x7a, 0xa8, 0x03, 0xc1, 0x69, + 0x08, 0x46, 0x23, 0x5d, 0x41, 0x94, 0x32, 0xd0, 0xdb, 0x2a, 0x7c, 0xa6, + 0xdc, 0x4e, 0x48, 0x9e, 0x10, 0xc9, 0xcf, 0xf0, 0xb9, 0xb9, 0xf5, 0xa2, + 0x02, 0xab, 0x16, 0x49, 0x51, 0x8c, 0xf0, 0x75, 0x11, 0xb2, 0x11, 0xa2, + 0x39, 0xc9, 0xe3, 0x7b, 0x20, 0xbb, 0xa7, 0x1e, 0x80, 0x6f, 0xa3, 0x5a, + 0xd8, 0x83, 0x45, 0x26, 0xbf, 0xe6, 0xd1, 0xf9, 0xf1, 0x9b, 0xbe, 0xd5, + 0xfc, 0xa3, 0xdf, 0xc5, 0x0c, 0x65, 0xb0, 0x9b, 0x92, 0xdc, 0xb3, 0x48, + 0xe6, 0x16, 0x50, 0x03, 0x9e, 0xa8, 0x11, 0x40, 0xe1, 0x04, 0xf8, 0xd0, + 0x88, 0x45, 0x42, 0x78, 0xad, 0xe2, 0x97, 0xd9, 0xa5, 0xd5, 0x82, 0x80, + 0xc7, 0xfb, 0xa9, 0x51, 0xcb, 0xd1, 0xa6, 0x8b, 0xd4, 0xe5, 0xfe, 0x10, + 0x8e, 0x8a, 0x68, 0x01, 0x17, 0x20, 0x90, 0x59, 0xb2, 0xf5, 0xf9, 0x37, + 0x87, 0xc3, 0x4f, 0x76, 0xf7, 0x74, 0x38, 0x5b, 0x03, 0x0f, 0x67, 0xd9, + 0xc8, 0xc3, 0x07, 0xbb, 0x0e, 0xc7, 0x68, 0x59, 0xd5, 0x38, 0xe0, 0xd8, + 0x8c, 0x4d, 0x97, 0x19, 0xb4, 0x55, 0x49, 0x0d, 0xda, 0x90, 0x4a, 0xab, + 0x26, 0x5c, 0xba, 0x9a, 0x7c, 0xec, 0x0c, 0x41, 0x65, 0x09, 0xad, 0xed, + 0x50, 0xba, 0x78, 0xbf, 0x78, 0x6e, 0x1f, 0x49, 0xcb, 0xda, 0x1a, 0xd2, + 0xc6, 0x7d, 0x4c, 0x4b, 0x7d, 0xcf, 0x79, 0xbd, 0xfd, 0xb7, 0x8c, 0x9a, + 0xa8, 0x97, 0xba, 0xe1, 0xf2, 0xf8, 0x6e, 0x70, 0x00, 0x34, 0x84, 0x7d, + 0x62, 0xd5, 0x63, 0xe6, 0x1e, 0xd0, 0x9d, 0x9f, 0x3e, 0xa3, 0x8d, 0xa2, + 0x93, 0x25, 0x50, 0x0d, 0xcc, 0x14, 0xb2, 0x29, 0x2b, 0x2d, 0xee, 0x91, + 0xa3, 0x9c, 0x81, 0xf3, 0x17, 0x12, 0x4c, 0xfa, 0x76, 0x10, 0x7d, 0x9d, + 0xcc, 0x0b, 0xad, 0xcc, 0x6c, 0xc9, 0x57, 0x08, 0x0e, 0xe4, 0x02, 0x51, + 0x28, 0xe7, 0x73, 0x9a, 0xc4, 0x0a, 0x22, 0x48, 0xbc, 0xae, 0x10, 0xdd, + 0xd6, 0x4a, 0x59, 0xc4, 0x1c, 0xa2, 0x87, 0x9b, 0x48, 0x0d, 0xb4, 0xa8, + 0xe7, 0x98, 0x16, 0xda, 0xc0, 0x66, 0x15, 0x0a, 0x10, 0xd0, 0xd4, 0x68, + 0x4e, 0x8f, 0x39, 0xbc, 0x4c, 0x6a, 0x4f, 0xbe, 0x01, 0xd6, 0x2a, 0xdb, + 0x09, 0x45, 0xd7, 0xf2, 0x4c, 0x65, 0x92, 0xdf, 0xb0, 0xd1, 0xa3, 0xa0, + 0xeb, 0x26, 0x9e, 0x8f, 0x57, 0x83, 0x09, 0x49, 0xb1, 0x6c, 0x36, 0x1b, + 0x2c, 0x6f, 0xb7, 0x83, 0x63, 0xca, 0x2c, 0xff, 0x46, 0x60, 0x01, 0xaa, + 0x26, 0x6f, 0xab, 0x45, 0xd8, 0x44, 0xed, 0x8a, 0x2b, 0x67, 0x82, 0x49, + 0xc2, 0x12, 0xfc, 0xe5, 0x78, 0xae, 0xc5, 0xb7, 0x3a, 0x8e, 0x1c, 0xcc, + 0x27, 0xb7, 0x30, 0x58, 0x24, 0xb3, 0x7d, 0x97, 0x82, 0x6c, 0xfc, 0x41, + 0xd1, 0xc1, 0x9d, 0x4a, 0x11, 0x98, 0x67, 0xe7, 0xc9, 0xf5, 0x54, 0x05, + 0x8a, 0x50, 0x69, 0xf1, 0xb0, 0xad, 0xcd, 0x34, 0x10, 0x51, 0x75, 0xe0, + 0x81, 0x40, 0xa1, 0x29, 0xe2, 0x54, 0x33, 0x54, 0x80, 0x31, 0xc6, 0xaf, + 0xe5, 0x6f, 0x7d, 0x23, 0x0a, 0x16, 0x02, 0xc4, 0x51, 0x16, 0x83, 0xd5, + 0xb8, 0x63, 0xe1, 0x48, 0xea, 0x78, 0xa2, 0x6f, 0x85, 0x42, 0x80, 0xf1, + 0xab, 0xa1, 0xd1, 0x70, 0x7b, 0x5a, 0xc1, 0x3f, 0x39, 0x2b, 0xf4, 0xf5, + 0xdd, 0x13, 0xb6, 0x75, 0x5f, 0x9e, 0x0e, 0x7b, 0x42, 0x0f, 0xf3, 0xe4, + 0x3e, 0xa0, 0x2c, 0x81, 0xa5, 0x56, 0xf2, 0x63, 0xcb, 0x8f, 0x84, 0xaf, + 0x59, 0xb1, 0xe1, 0x5c, 0x46, 0x23, 0x9c, 0xc1, 0x3b, 0xc9, 0x7c, 0x16, + 0x84, 0x2d, 0x84, 0xc6, 0x13, 0xf3, 0x70, 0xac, 0x72, 0x8a, 0x08, 0x44, + 0x0e, 0xe0, 0x85, 0xa1, 0xf3, 0x48, 0x60, 0x7a, 0xd2, 0x8b, 0xfa, 0x7b, + 0x80, 0xcd, 0xd9, 0xad, 0x2e, 0x64, 0xcc, 0x05, 0x4d, 0xe2, 0x31, 0x0a, + 0x38, 0x6d, 0xb8, 0xc2, 0xf2, 0xc6, 0x12, 0x36, 0x95, 0xac, 0xef, 0xe8, + 0x7d, 0xfe, 0xb1, 0xa7, 0x93, 0xba, 0xdb, 0x45, 0xe8, 0x36, 0xcb, 0xa3, + 0x77, 0xc9, 0x74, 0xd5, 0x14, 0x1b, 0xf6, 0x1e, 0xdd, 0x59, 0x24, 0x49, + 0xdc, 0xa7, 0x0e, 0x52, 0x55, 0x50, 0xb5, 0x61, 0x08, 0x55, 0x20, 0x43, + 0x1b, 0x00, 0x2d, 0xa3, 0x9a, 0xb8, 0xe7, 0xd1, 0xdd, 0x9e, 0x79, 0x9a, + 0xf9, 0x1b, 0x5b, 0x3c, 0x31, 0xd5, 0x7b, 0x46, 0xd2, 0xc8, 0x5d, 0xe4, + 0x70, 0xb7, 0x80, 0x72, 0x39, 0xf5, 0x89, 0xe8, 0x96, 0x38, 0x49, 0x85, + 0xd3, 0xb0, 0x06, 0x55, 0x3a, 0xf4, 0x21, 0xde, 0x7e, 0x20, 0xbe, 0x92, + 0x2c, 0xec, 0x83, 0x9c, 0x10, 0x02, 0x8e, 0x33, 0x4d, 0x12, 0x6c, 0xb1, + 0x9c, 0x69, 0x25, 0x2a, 0x30, 0xe2, 0x1e, 0xae, 0xdb, 0x32, 0x22, 0x4e, + 0x9c, 0x4a, 0xc8, 0xdf, 0x14, 0xc2, 0x34, 0x04, 0x2c, 0x35, 0x96, 0xfa, + 0x85, 0x62, 0x0b, 0x98, 0xc0, 0xe9, 0x81, 0x5e, 0x6e, 0x52, 0xb1, 0x61, + 0x20, 0x42, 0x15, 0x0b, 0x46, 0xac, 0xa2, 0x1b, 0xd1, 0xe9, 0x5b, 0x72, + 0xa3, 0x65, 0x86, 0x10, 0x58, 0x27, 0x30, 0x48, 0x1b, 0x43, 0x08, 0x9d, + 0x51, 0x37, 0xe4, 0x91, 0xfd, 0xcf, 0x79, 0x0d, 0x8a, 0xae, 0x5f, 0x34, + 0x05, 0x09, 0xae, 0xae, 0x80, 0xba, 0x47, 0xac, 0xe2, 0xc9, 0x79, 0x6e, + 0x85, 0x53, 0xbb, 0xc9, 0x03, 0x0b, 0x48, 0x5d, 0xed, 0x55, 0xbe, 0x16, + 0x14, 0x00, 0x2c, 0xee, 0xf9, 0xc9, 0x5b, 0xa9, 0x05, 0xea, 0x0e, 0x52, + 0xc2, 0x90, 0x89, 0x1b, 0x52, 0xc6, 0x16, 0xe3, 0x89, 0x15, 0x67, 0x22, + 0x12, 0x7b, 0x13, 0x13, 0x1b, 0x1f, 0x90, 0x54, 0xfb, 0xba, 0x58, 0x4a, + 0xef, 0x5d, 0xbe, 0x24, 0x8b, 0x62, 0xda, 0xad, 0x15, 0xb8, 0x73, 0x9b, + 0x59, 0xbb, 0x8d, 0x9c, 0x21, 0x6b, 0x3c, 0x09, 0x2b, 0xf6, 0x6a, 0x2b, + 0x15, 0x26, 0xd9, 0xab, 0xe5, 0x49, 0x86, 0x16, 0xf4, 0x4f, 0xa2, 0xc1, + 0x36, 0x75, 0x58, 0x6c, 0xdb, 0x8b, 0x8b, 0xdb, 0x71, 0x41, 0xd7, 0x23, + 0x27, 0x05, 0xff, 0xe8, 0x90, 0x9c, 0x79, 0xc4, 0x93, 0x9f, 0xa2, 0xfe, + 0x78, 0x8a, 0xf9, 0x45, 0xa8, 0xa6, 0xf9, 0x23, 0x91, 0x0c, 0x3f, 0xf1, + 0xd3, 0x06, 0x67, 0xc9, 0x0d, 0xdf, 0xbd, 0x61, 0x1c, 0x75, 0x94, 0x2b, + 0xbc, 0xbc, 0x38, 0x78, 0x3b, 0x7c, 0x2d, 0x46, 0xd6, 0xcb, 0xcc, 0x17, + 0x42, 0x54, 0xcb, 0x82, 0xf3, 0x44, 0x3a, 0xa4, 0xb1, 0x7b, 0x01, 0xf7, + 0xb6, 0x20, 0x6d, 0x2d, 0x91, 0xd8, 0xab, 0x83, 0x18, 0x4b, 0x89, 0x45, + 0xf0, 0x6a, 0x3a, 0x4c, 0x9b, 0xc5, 0x96, 0xbb, 0x58, 0x8b, 0xb0, 0x5a, + 0x89, 0xc7, 0xb8, 0x33, 0x6c, 0x54, 0x7d, 0x88, 0x09, 0xe5, 0xd0, 0x06, + 0x63, 0x9f, 0x0a, 0x2f, 0x5f, 0x8b, 0x2b, 0x79, 0x48, 0xaa, 0x47, 0x5f, + 0x61, 0xf1, 0x83, 0xda, 0x2c, 0xce, 0x30, 0x27, 0xbc, 0x5c, 0xd1, 0xe0, + 0x5c, 0xe3, 0x61, 0x22, 0xa1, 0x35, 0xbd, 0xf9, 0xc7, 0xdd, 0xad, 0xf6, + 0xe6, 0x2f, 0x7f, 0x69, 0xf3, 0xed, 0x63, 0x37, 0x59, 0xdf, 0xe7, 0xa9, + 0x6c, 0xfe, 0x71, 0x6f, 0xeb, 0xd1, 0x19, 0x85, 0x99, 0x76, 0xbe, 0x4f, + 0x7a, 0x83, 0x07, 0x1b, 0xbd, 0xb2, 0x9a, 0xb7, 0x7a, 0x07, 0xbb, 0x58, + 0x8f, 0x2b, 0x8f, 0x72, 0x57, 0x41, 0x7d, 0xe0, 0x58, 0x60, 0x27, 0xf9, + 0x79, 0x17, 0x8e, 0xa6, 0x2c, 0x9c, 0xfc, 0xef, 0xe3, 0x10, 0x1d, 0x90, + 0x14, 0xf1, 0x90, 0xdd, 0x71, 0xba, 0x79, 0x91, 0x0d, 0xd0, 0xf7, 0xde, + 0x23, 0x7d, 0xfb, 0xd9, 0x05, 0x6a, 0x2e, 0xfb, 0x43, 0x39, 0xa0, 0xca, + 0xf0, 0x60, 0xb5, 0x9f, 0x0d, 0x5f, 0x5e, 0x73, 0x7d, 0x7f, 0x97, 0x27, + 0x6f, 0x8e, 0x19, 0x37, 0xf6, 0xe8, 0x84, 0xf1, 0xcb, 0x86, 0x8a, 0x20, + 0x68, 0x1a, 0xad, 0x03, 0x57, 0x0d, 0xc1, 0xed, 0xc5, 0x51, 0xe8, 0xe2, + 0x96, 0xdc, 0xe9, 0x77, 0x3b, 0xc1, 0x5d, 0x6b, 0x60, 0x6d, 0x61, 0xe9, + 0x7b, 0x27, 0x57, 0xfd, 0x37, 0xd9, 0x04, 0x5a, 0x57, 0x5f, 0xe0, 0xa8, + 0xe9, 0x2d, 0xfa, 0xf0, 0xdd, 0x7c, 0x56, 0xf9, 0x38, 0x4c, 0x12, 0x54, + 0x85, 0x7a, 0x63, 0x5d, 0x01, 0x80, 0x9f, 0xb7, 0xfb, 0x7d, 0x94, 0xb7, + 0x95, 0xf8, 0x20, 0xf5, 0x12, 0x54, 0x30, 0x1e, 0xec, 0xec, 0xd3, 0xfa, + 0xa4, 0xd3, 0x95, 0x78, 0xb4, 0x63, 0x1f, 0x87, 0xe4, 0x33, 0x02, 0xaf, + 0x39, 0x2b, 0xc9, 0x1b, 0x8b, 0xc4, 0x1c, 0xb4, 0x11, 0x42, 0x52, 0x42, + 0x2e, 0x4f, 0xee, 0x7d, 0x20, 0x8d, 0x16, 0x12, 0xcc, 0x16, 0x2b, 0x4c, + 0xf2, 0xbe, 0xe2, 0xa3, 0x6f, 0x75, 0xd4, 0xfd, 0x2c, 0xef, 0x54, 0x4a, + 0x5e, 0x48, 0x0f, 0x21, 0x01, 0xea, 0x27, 0x5a, 0x21, 0xe2, 0x2c, 0x0f, + 0x18, 0x98, 0x0e, 0xdb, 0x8a, 0xbe, 0x04, 0x70, 0x95, 0x01, 0xba, 0x66, + 0x75, 0x9c, 0xde, 0x7a, 0xb9, 0xc1, 0xd7, 0xda, 0x80, 0x8d, 0xe6, 0xe6, + 0x65, 0x21, 0xae, 0xb3, 0xa8, 0x96, 0xea, 0x4b, 0x22, 0x4b, 0x1a, 0x96, + 0x9c, 0xf0, 0x6e, 0xbf, 0x0b, 0x44, 0xed, 0x74, 0xde, 0x32, 0x99, 0xfe, + 0x2f, 0x9f, 0x4d, 0xc3, 0x87, 0x17, 0x75, 0xae, 0x18, 0x58, 0x81, 0x1d, + 0x22, 0x1d, 0x19, 0x80, 0x60, 0x8d, 0x08, 0x6d, 0x91, 0x3c, 0xcf, 0x6c, + 0xcd, 0xf4, 0x12, 0xd1, 0xd1, 0x5c, 0x88, 0xa5, 0xb3, 0xb6, 0x8a, 0x91, + 0x8b, 0xf9, 0xe8, 0x72, 0x31, 0x81, 0x77, 0x5f, 0xe2, 0x1a, 0xff, 0x33, + 0x9e, 0x2f, 0xe3, 0x7c, 0x15, 0xed, 0xee, 0xf5, 0xa2, 0xbd, 0x9d, 0xdd, + 0xbd, 0x96, 0x39, 0x74, 0xfe, 0x93, 0xa3, 0x6b, 0xf6, 0xf0, 0x75, 0xe7, + 0x63, 0x67, 0xe1, 0x63, 0xe4, 0x71, 0xab, 0x6a, 0x36, 0x29, 0xf1, 0x1e, + 0x76, 0xf4, 0x49, 0x35, 0x5f, 0xae, 0xdf, 0x07, 0x40, 0x34, 0xc8, 0x14, + 0x62, 0x73, 0xb2, 0xda, 0x53, 0xae, 0x4c, 0x09, 0x3f, 0xb1, 0xa1, 0x25, + 0xd4, 0x10, 0x42, 0xe1, 0x0c, 0x6f, 0x71, 0x8e, 0xc2, 0x5a, 0xd5, 0x3d, + 0x4a, 0x4b, 0xdb, 0x16, 0x8e, 0xd1, 0xe0, 0xbd, 0x21, 0x7a, 0x3f, 0x3a, + 0x39, 0xbc, 0x34, 0xc4, 0xbc, 0x2b, 0xbe, 0x4e, 0xf3, 0xd5, 0xc7, 0xd5, + 0x28, 0x7a, 0xf4, 0x99, 0xc9, 0xfe, 0x4d, 0x42, 0x12, 0xd9, 0x7c, 0xb4, + 0xbc, 0xde, 0xff, 0x6b, 0x9c, 0x5f, 0x67, 0xf3, 0x0f, 0x3d, 0x3f, 0x41, + 0x92, 0xd2, 0x3e, 0x31, 0xa8, 0xdd, 0x17, 0xbb, 0x4f, 0x24, 0x02, 0x3e, + 0xe5, 0x92, 0x66, 0xe0, 0x0f, 0xdd, 0x59, 0x57, 0x00, 0x1b, 0x10, 0x7a, + 0xef, 0x50, 0x1a, 0xe6, 0x93, 0xae, 0xa8, 0x5b, 0x71, 0xf8, 0xec, 0x44, + 0x9f, 0x95, 0x6c, 0xe6, 0xee, 0x86, 0x94, 0x6a, 0xec, 0x72, 0xea, 0xdf, + 0x72, 0xd1, 0x1d, 0x54, 0x4e, 0xf8, 0x07, 0xe6, 0xca, 0x5d, 0xb8, 0x92, + 0x4c, 0x87, 0xc2, 0x93, 0x95, 0x9d, 0x8e, 0xf2, 0x24, 0xbe, 0xf5, 0x05, + 0xfd, 0x3c, 0x9a, 0x83, 0xd9, 0xce, 0x2f, 0x5e, 0x1f, 0x0a, 0x06, 0xa6, + 0xe5, 0xe0, 0x60, 0xa9, 0x23, 0x67, 0xe9, 0xd8, 0xe2, 0x51, 0x7e, 0xa0, + 0x7f, 0x0e, 0x92, 0xdf, 0x9f, 0x8c, 0x3e, 0xe2, 0x21, 0x3a, 0x77, 0x02, + 0x37, 0x76, 0x50, 0x2d, 0x67, 0xc0, 0x32, 0x7f, 0xc9, 0xa4, 0x66, 0x95, + 0xfb, 0x36, 0xa5, 0x40, 0x9b, 0xd8, 0xae, 0xa5, 0x62, 0xbc, 0x16, 0x18, + 0x56, 0x63, 0x01, 0x8d, 0x9b, 0xab, 0x9f, 0x1d, 0x1d, 0x9c, 0x07, 0x7a, + 0x13, 0xf4, 0x12, 0x6f, 0x23, 0xe2, 0xe7, 0x58, 0x66, 0x46, 0x71, 0x50, + 0x31, 0x25, 0xad, 0x7a, 0x5e, 0xda, 0x2d, 0xc1, 0x27, 0x27, 0x77, 0xb1, + 0x44, 0x5a, 0x67, 0x7a, 0x9d, 0xc0, 0x9c, 0x01, 0x3c, 0xef, 0xe9, 0x24, + 0x86, 0x47, 0x4d, 0x2f, 0x21, 0x08, 0xa1, 0x68, 0x2b, 0xd5, 0xb0, 0x1a, + 0xda, 0x9b, 0x87, 0x48, 0xb3, 0x01, 0x34, 0xed, 0x41, 0x7e, 0x97, 0xc7, + 0x38, 0xd3, 0x75, 0x65, 0x13, 0x10, 0xfe, 0x4c, 0x83, 0x8f, 0x8b, 0x5b, + 0x62, 0xa5, 0xe2, 0x09, 0xa6, 0xde, 0xd3, 0x71, 0x62, 0x36, 0xd5, 0x49, + 0x2a, 0x11, 0x19, 0x6c, 0xcd, 0x00, 0x96, 0x4e, 0x65, 0xc3, 0xe4, 0x06, + 0x62, 0xe5, 0x65, 0x5a, 0x24, 0x82, 0x7b, 0x17, 0x5d, 0xde, 0x67, 0x22, + 0x74, 0x3a, 0xc0, 0x01, 0x89, 0x69, 0x2c, 0x96, 0xa9, 0x40, 0x67, 0xd0, + 0xe6, 0x81, 0x1f, 0x04, 0xe5, 0xd5, 0x3a, 0xce, 0x90, 0x72, 0xe4, 0x1c, + 0x68, 0xc3, 0xa3, 0x6f, 0x22, 0xce, 0xd1, 0xe6, 0x3e, 0x0e, 0xb9, 0x26, + 0x01, 0xfb, 0xc2, 0x67, 0x50, 0x24, 0xbe, 0x5a, 0xf2, 0x79, 0x3f, 0xbc, + 0x89, 0x17, 0x2c, 0x12, 0xef, 0xee, 0xb0, 0xf6, 0xfd, 0x9d, 0x65, 0x7b, + 0xf1, 0x41, 0xb5, 0xd2, 0xab, 0x45, 0x27, 0x50, 0xcc, 0x27, 0x5c, 0x39, + 0x95, 0x65, 0xe2, 0xaa, 0xcd, 0x8f, 0x6e, 0xcf, 0x62, 0x7b, 0xc6, 0x0c, + 0x6b, 0x5a, 0x10, 0x69, 0xe4, 0xc5, 0xe4, 0x76, 0x7b, 0x4c, 0xff, 0x3c, + 0xd9, 0xd9, 0x06, 0x14, 0x63, 0x09, 0x13, 0x19, 0xd3, 0xe4, 0xde, 0xde, + 0xb3, 0x67, 0xbd, 0xa8, 0xc3, 0x46, 0x2b, 0xeb, 0x80, 0x8f, 0x04, 0x9d, + 0xac, 0x4e, 0x5b, 0x9d, 0xb9, 0xed, 0xfc, 0x6a, 0xcc, 0xff, 0xf1, 0x6b, + 0x56, 0x2b, 0xea, 0x52, 0xd3, 0x37, 0xb0, 0x0e, 0xf3, 0x10, 0x6b, 0xc5, + 0xc8, 0xea, 0x9e, 0xf6, 0xc1, 0xcc, 0x12, 0xec, 0x81, 0x58, 0x24, 0xd9, + 0xc2, 0xdc, 0x8c, 0x33, 0x05, 0xc8, 0x47, 0xf7, 0x81, 0x73, 0x06, 0x8e, + 0x61, 0x89, 0xab, 0xd2, 0xc4, 0xfa, 0x62, 0x39, 0xea, 0x6b, 0x86, 0xa9, + 0xe8, 0x19, 0x29, 0x9d, 0x5c, 0xfa, 0x73, 0x6a, 0xd6, 0xdf, 0x06, 0x47, + 0xfe, 0x32, 0xea, 0x28, 0x6d, 0xf1, 0x8f, 0x01, 0xbc, 0x84, 0xc9, 0x98, + 0xa7, 0x91, 0xbd, 0xd2, 0x3f, 0xfe, 0xe3, 0x3f, 0xa8, 0xd9, 0xff, 0xe0, + 0x56, 0x5e, 0xfd, 0xb1, 0x28, 0x6f, 0x82, 0x67, 0x3a, 0x4a, 0xf0, 0x27, + 0xde, 0x47, 0x8a, 0xb8, 0x27, 0x00, 0x95, 0x22, 0x11, 0xea, 0xcd, 0xa9, + 0x72, 0xe4, 0x5e, 0x30, 0xbf, 0x14, 0x29, 0x6a, 0x62, 0x73, 0x73, 0x61, + 0x07, 0x5f, 0xb2, 0xff, 0x32, 0xe1, 0xd4, 0x66, 0xa2, 0x42, 0x20, 0xd1, + 0x6d, 0x99, 0x88, 0x71, 0xfc, 0xf6, 0xdb, 0x93, 0x8b, 0xb3, 0xb7, 0x6f, + 0x8e, 0xdf, 0x5e, 0x46, 0xdf, 0x1e, 0x5c, 0x9c, 0x1c, 0x7c, 0x79, 0xaa, + 0x19, 0xd4, 0x3c, 0x05, 0x8e, 0x16, 0x11, 0xd1, 0xbb, 0x86, 0x23, 0x1a, + 0x64, 0xb4, 0xb4, 0x82, 0xe7, 0xd7, 0xca, 0x05, 0xbe, 0x57, 0x60, 0x6a, + 0x98, 0x57, 0xdf, 0xa3, 0x80, 0x45, 0x8f, 0x1d, 0x7e, 0xef, 0xad, 0x96, + 0x05, 0x9b, 0x2d, 0x57, 0x41, 0x4e, 0x2e, 0x07, 0xb2, 0x30, 0x95, 0x1a, + 0x7f, 0xf2, 0x75, 0x87, 0x14, 0xde, 0x7f, 0x10, 0x7d, 0x25, 0x69, 0xdd, + 0x1a, 0x52, 0xe5, 0x5e, 0xd5, 0x14, 0x23, 0x98, 0x71, 0xdc, 0x18, 0x0e, + 0x4e, 0x4f, 0x7d, 0x57, 0x8f, 0x57, 0x61, 0x50, 0x38, 0x1f, 0xc9, 0x02, + 0xba, 0xb1, 0xea, 0xc9, 0xd7, 0x99, 0x47, 0xd9, 0x9e, 0xaf, 0x42, 0x40, + 0x6d, 0xee, 0x8c, 0xb6, 0x63, 0x53, 0xb0, 0x18, 0xd8, 0xdd, 0x48, 0x07, + 0x28, 0x2d, 0x6e, 0x7b, 0x51, 0xf7, 0x8f, 0x5d, 0xc9, 0xce, 0x4a, 0x00, + 0x37, 0x2b, 0x35, 0x1e, 0xb6, 0xfc, 0xa0, 0xde, 0x9e, 0xf9, 0x31, 0xa9, + 0x13, 0xcd, 0x0d, 0xc0, 0xbd, 0xe8, 0xfd, 0x9f, 0x85, 0xc9, 0x33, 0x08, + 0x3c, 0xf4, 0x8f, 0x2b, 0xa2, 0xbf, 0x4b, 0x31, 0x57, 0x1a, 0x65, 0x3f, + 0x49, 0xeb, 0xbb, 0x50, 0xda, 0xe2, 0x71, 0x80, 0x2a, 0x2c, 0x66, 0x1c, + 0x56, 0x7e, 0x21, 0x07, 0x48, 0xad, 0x67, 0xb9, 0x1c, 0x1e, 0xa4, 0x44, + 0xf8, 0x86, 0x15, 0x26, 0x56, 0x0e, 0x0a, 0xaa, 0x7a, 0xd8, 0xb6, 0x5a, + 0x0f, 0x70, 0x59, 0x71, 0x60, 0x79, 0x9e, 0x4e, 0x14, 0xa7, 0xae, 0x95, + 0x2a, 0x06, 0xf0, 0x74, 0x5c, 0x1c, 0x02, 0xd4, 0x7b, 0xce, 0x05, 0xa0, + 0x5c, 0x21, 0x04, 0x09, 0x42, 0x25, 0x2e, 0x92, 0x73, 0x66, 0xd7, 0x5c, + 0x85, 0x10, 0x04, 0x76, 0x42, 0x44, 0x8f, 0xaf, 0x33, 0x13, 0xbf, 0x63, + 0xe7, 0x7e, 0x95, 0x8c, 0x2d, 0x89, 0xd9, 0x31, 0x29, 0xcc, 0x01, 0x51, + 0x39, 0x0b, 0x18, 0x1c, 0xb5, 0x66, 0x6f, 0xe6, 0x38, 0x25, 0xd8, 0xcb, + 0x34, 0x8e, 0xa1, 0x08, 0xd2, 0x7d, 0x7d, 0x18, 0x3c, 0xf3, 0x12, 0x71, + 0x51, 0x1a, 0x32, 0x14, 0xf0, 0xb7, 0x2c, 0x3d, 0x18, 0x11, 0x73, 0x18, + 0x16, 0x3f, 0x88, 0x26, 0x35, 0xf8, 0x11, 0x4d, 0x9a, 0x29, 0x94, 0x4e, + 0xcf, 0x94, 0x33, 0x91, 0x8c, 0x13, 0xc5, 0xd1, 0x28, 0xbd, 0x8e, 0xcc, + 0x0a, 0x12, 0x31, 0x95, 0x00, 0x25, 0x2c, 0x9b, 0x25, 0xbc, 0x55, 0xc0, + 0x00, 0x83, 0xec, 0x7e, 0x93, 0x4d, 0x43, 0xd0, 0x2a, 0x9b, 0x49, 0xc1, + 0x91, 0xfa, 0x81, 0x15, 0x0d, 0x96, 0xf4, 0x25, 0xaf, 0xa3, 0x85, 0x35, + 0x29, 0xbe, 0xb5, 0x06, 0x79, 0xb1, 0x89, 0x16, 0x70, 0x7b, 0x73, 0xa4, + 0x94, 0x58, 0x7a, 0x2e, 0xd6, 0xc1, 0x02, 0x60, 0x99, 0x5b, 0xc0, 0xb2, + 0xc2, 0xd5, 0xa6, 0x36, 0x1d, 0x40, 0x35, 0xb7, 0x32, 0x16, 0x88, 0x4f, + 0x26, 0x7a, 0x89, 0x4f, 0xaf, 0x54, 0x93, 0xb0, 0xcd, 0x52, 0x28, 0x26, + 0xa2, 0x09, 0x1e, 0x34, 0x8d, 0x6f, 0x33, 0x60, 0x3c, 0x73, 0x22, 0x11, + 0x79, 0x4c, 0xf4, 0x47, 0xfd, 0xab, 0x2f, 0xde, 0xcb, 0xd8, 0x0a, 0x6f, + 0x15, 0x5b, 0xde, 0x83, 0x2d, 0x52, 0x00, 0x53, 0xeb, 0x58, 0x0b, 0x5a, + 0x61, 0xbc, 0xb4, 0x5f, 0x66, 0x88, 0x0a, 0xed, 0x58, 0x91, 0x65, 0x6e, + 0x4c, 0xa7, 0x01, 0x44, 0xb5, 0x98, 0x23, 0xe2, 0x86, 0xf0, 0xc1, 0xce, + 0x06, 0x49, 0x68, 0xd4, 0x18, 0x12, 0x81, 0xb3, 0x0d, 0x66, 0xa2, 0xd1, + 0xc9, 0x2c, 0x9e, 0xd5, 0xcc, 0x63, 0x01, 0x47, 0x33, 0x6f, 0x6b, 0x78, + 0x33, 0x69, 0x65, 0x84, 0x34, 0x9e, 0x89, 0xf0, 0xe8, 0xc9, 0x6f, 0xb6, + 0x92, 0xf8, 0xb5, 0x8d, 0x8d, 0xc3, 0x77, 0xc3, 0xcb, 0xb3, 0x37, 0xd1, + 0xd9, 0xbb, 0xcb, 0xf3, 0x77, 0x97, 0x7a, 0x75, 0x8d, 0x24, 0xfa, 0x57, + 0x74, 0x44, 0x91, 0x02, 0x6c, 0x37, 0x67, 0xea, 0x42, 0x46, 0xb0, 0x42, + 0x06, 0x68, 0xba, 0x00, 0xa5, 0xc6, 0x65, 0xf7, 0x00, 0xbb, 0x49, 0x10, + 0x6f, 0xb1, 0xe6, 0xf7, 0xb4, 0xe6, 0xc8, 0xcc, 0x84, 0x6d, 0xc7, 0x92, + 0x85, 0xa0, 0xf7, 0xb4, 0x57, 0x1d, 0xa9, 0xd5, 0x31, 0x83, 0xb3, 0xb7, + 0x0a, 0x0a, 0xe4, 0x23, 0x72, 0xcc, 0xb6, 0xe3, 0x4d, 0x3f, 0x61, 0x70, + 0x20, 0xc2, 0x62, 0xc6, 0xa5, 0x19, 0x33, 0x2d, 0x3e, 0x13, 0x41, 0x2b, + 0xd5, 0x14, 0xb5, 0x30, 0x53, 0xae, 0xcc, 0x68, 0x86, 0x37, 0x2e, 0xb6, + 0x9a, 0xe3, 0x51, 0x10, 0x53, 0x26, 0x0e, 0x79, 0x0e, 0xde, 0x12, 0x95, + 0x81, 0x14, 0x41, 0x36, 0x81, 0x37, 0xae, 0xd9, 0xfb, 0xa8, 0xfb, 0x5d, + 0x12, 0x36, 0xf8, 0xfb, 0xbf, 0x73, 0x02, 0xe0, 0x7b, 0xfb, 0xe4, 0x1f, + 0xd2, 0xe5, 0x5f, 0xe6, 0x5d, 0x84, 0x62, 0x55, 0x3d, 0xaf, 0xdf, 0x1c, + 0x5f, 0x7c, 0x79, 0x7c, 0x71, 0x36, 0x44, 0xf8, 0x89, 0x99, 0xbb, 0x9a, + 0xc4, 0x7e, 0x9b, 0xe4, 0xa3, 0x24, 0xcf, 0xb4, 0x90, 0x8c, 0xfd, 0xf5, + 0x6c, 0xfb, 0xab, 0xe1, 0xf0, 0xe0, 0xfc, 0xc4, 0xd5, 0x1c, 0x71, 0xa9, + 0x48, 0xa2, 0x23, 0xcd, 0x25, 0x59, 0x8e, 0xe7, 0x6f, 0xaf, 0x10, 0x5d, + 0x8c, 0x6f, 0x25, 0x44, 0xb5, 0xe1, 0xe3, 0x34, 0x1b, 0x2d, 0x3b, 0x37, + 0x35, 0x43, 0x8d, 0x1b, 0x36, 0x74, 0x21, 0x49, 0xd4, 0x16, 0x02, 0x7e, + 0xcd, 0x26, 0xe5, 0x9e, 0x0b, 0xe3, 0xba, 0xcd, 0x47, 0x7d, 0x22, 0xf4, + 0x5b, 0xab, 0x0f, 0x29, 0xc1, 0xf4, 0xc4, 0x26, 0x25, 0xca, 0xd6, 0xdb, + 0x19, 0x6e, 0xb9, 0x2a, 0xec, 0xf6, 0x2d, 0x1f, 0x0d, 0x2e, 0x8b, 0x31, + 0x1d, 0x08, 0x67, 0x97, 0xb3, 0x64, 0xa1, 0x93, 0xcc, 0x5e, 0x1f, 0x03, + 0x3b, 0xa0, 0xde, 0x5c, 0xbd, 0x2a, 0x31, 0x75, 0xd1, 0x27, 0x4f, 0x1d, + 0xe8, 0x53, 0x58, 0x30, 0xf4, 0x8a, 0x84, 0xef, 0xc5, 0xfd, 0x44, 0x2f, + 0x10, 0x40, 0x1c, 0xcf, 0xc5, 0xca, 0x2d, 0xfc, 0xbb, 0xee, 0xeb, 0xe0, + 0x02, 0x5b, 0x88, 0xfa, 0xd7, 0x98, 0xe6, 0x68, 0x34, 0x8d, 0xe7, 0xb7, + 0xb8, 0xc9, 0x70, 0x37, 0xb1, 0xba, 0x69, 0x58, 0x46, 0x5c, 0x8e, 0x0c, + 0xae, 0x2d, 0x85, 0x17, 0x80, 0x00, 0x68, 0x85, 0xde, 0xd9, 0xb2, 0xeb, + 0x20, 0x9b, 0x02, 0x27, 0x0e, 0x4e, 0x92, 0x5f, 0x04, 0xb6, 0x1a, 0x1d, + 0x9f, 0xd2, 0xa5, 0xe4, 0x32, 0x15, 0xa0, 0x9e, 0x27, 0x53, 0x06, 0xde, + 0xb1, 0xe0, 0x12, 0x49, 0xce, 0x4b, 0xc1, 0xc4, 0x84, 0x71, 0x18, 0xfa, + 0x36, 0xdc, 0x10, 0xa0, 0x14, 0xe4, 0x20, 0x16, 0xae, 0x46, 0x85, 0x72, + 0x6d, 0x61, 0x60, 0x00, 0x97, 0xf4, 0x25, 0x2b, 0xc2, 0x22, 0x26, 0x1a, + 0xb3, 0x75, 0xe8, 0x43, 0x4b, 0x62, 0xfb, 0x4e, 0x06, 0xe1, 0x45, 0x52, + 0xe7, 0xac, 0xaa, 0xa4, 0x48, 0xac, 0xdd, 0x26, 0x79, 0xbd, 0xcd, 0x00, + 0x00, 0x06, 0x48, 0x0d, 0x88, 0xf5, 0xdb, 0xc1, 0xcb, 0x58, 0xdc, 0x6b, + 0x35, 0xd6, 0xd4, 0x06, 0x3e, 0xb0, 0x4a, 0xf2, 0x08, 0x7f, 0x12, 0xff, + 0x13, 0xe2, 0x24, 0xf5, 0xf6, 0x2d, 0x27, 0xe0, 0x36, 0x79, 0x05, 0xe9, + 0x34, 0x0c, 0xf1, 0x14, 0x04, 0x04, 0x98, 0x05, 0x25, 0xe8, 0x1f, 0x1a, + 0x8c, 0x93, 0x6d, 0xfb, 0x6f, 0xf9, 0xaa, 0xc8, 0xfa, 0xa3, 0x25, 0x74, + 0x32, 0x8f, 0xd5, 0xa5, 0x89, 0x80, 0x5c, 0x14, 0x18, 0xe0, 0x5c, 0xf8, + 0x9e, 0xdd, 0x1a, 0x48, 0xb1, 0x16, 0x4f, 0x07, 0x72, 0xee, 0xaa, 0xc0, + 0x2d, 0x0e, 0xae, 0x43, 0x02, 0xd9, 0x11, 0xd0, 0xab, 0x51, 0xcb, 0x3a, + 0x42, 0xdd, 0x64, 0x17, 0x72, 0x36, 0xd7, 0xaa, 0x79, 0xb0, 0xb3, 0x57, + 0xc3, 0x76, 0x4b, 0x87, 0x96, 0x7e, 0x09, 0x11, 0x21, 0x51, 0x0c, 0x71, + 0x8b, 0xc7, 0xb5, 0xe8, 0xff, 0xbb, 0x92, 0xeb, 0x03, 0x09, 0xd2, 0x40, + 0x3c, 0x95, 0x22, 0x0f, 0x6b, 0x6f, 0x11, 0x39, 0x4c, 0xe5, 0xe5, 0xe5, + 0x0f, 0xe7, 0xc7, 0xaf, 0xec, 0xcd, 0xc7, 0xf6, 0x4c, 0x00, 0xb8, 0x10, + 0x7e, 0x91, 0x28, 0xd8, 0x65, 0x50, 0x83, 0x93, 0x88, 0xac, 0x5f, 0x9a, + 0x5b, 0x58, 0xba, 0xe9, 0x47, 0xdf, 0x1f, 0x9d, 0x0c, 0xcf, 0x4f, 0xcf, + 0x0e, 0x5f, 0xbd, 0xfc, 0xde, 0xb8, 0xf1, 0xe7, 0x8c, 0x38, 0x23, 0x32, + 0x9a, 0xfb, 0xcc, 0x03, 0x04, 0xe8, 0x7b, 0x6f, 0x8f, 0xbf, 0x7b, 0x4f, + 0x9a, 0xc1, 0x2b, 0x06, 0x05, 0xef, 0xdd, 0xc5, 0x53, 0x7d, 0x89, 0xd5, + 0xab, 0x16, 0xb9, 0x2e, 0x48, 0xe7, 0x68, 0x5b, 0x58, 0x96, 0x27, 0x02, + 0x84, 0xd6, 0x15, 0x24, 0x68, 0x8d, 0xc8, 0x0a, 0xea, 0x09, 0xc5, 0x95, + 0xdc, 0xcc, 0x96, 0xe2, 0x8c, 0x99, 0xbb, 0xf9, 0xbb, 0xa5, 0x44, 0xe6, + 0xb1, 0x37, 0x3a, 0x74, 0xf2, 0x22, 0xf8, 0x51, 0xbf, 0xf1, 0x41, 0xa1, + 0x0a, 0xbf, 0x9b, 0x73, 0x2c, 0x84, 0xc3, 0x32, 0xd4, 0x0a, 0x99, 0x70, + 0x9f, 0x2a, 0xe0, 0xa1, 0x22, 0xf9, 0x70, 0x1c, 0xa6, 0x85, 0x64, 0xbb, + 0x2a, 0xcc, 0x22, 0xbe, 0xb8, 0xb1, 0xc4, 0xe3, 0x31, 0xfd, 0x60, 0x8c, + 0x49, 0x2e, 0xe7, 0x72, 0xce, 0x55, 0xd9, 0x87, 0x97, 0xac, 0x42, 0x69, + 0xd5, 0x32, 0x35, 0x3f, 0x5b, 0x49, 0x39, 0x24, 0xfe, 0x57, 0xb1, 0x2b, + 0xc3, 0x52, 0x13, 0x95, 0x13, 0xed, 0xd8, 0x5c, 0x35, 0x13, 0x90, 0xad, + 0x08, 0x92, 0x5e, 0xc8, 0x42, 0xa8, 0x20, 0xb0, 0xc6, 0x57, 0x76, 0x80, + 0x33, 0x25, 0x8d, 0x5a, 0xc5, 0x05, 0x54, 0x4b, 0xc1, 0xee, 0x4c, 0xd3, + 0x91, 0x37, 0x98, 0xd7, 0x3c, 0x91, 0xec, 0xe8, 0x56, 0xc4, 0x87, 0xf0, + 0x08, 0x99, 0x29, 0xdc, 0xa7, 0xd7, 0x16, 0x99, 0x95, 0x4f, 0x14, 0xe2, + 0x87, 0xa9, 0x3a, 0x4c, 0x82, 0x74, 0x4a, 0x2a, 0x14, 0x13, 0x13, 0xd1, + 0xdc, 0xa7, 0x41, 0x28, 0xa3, 0x82, 0x08, 0x01, 0xfb, 0x54, 0x59, 0x36, + 0xea, 0x95, 0x4b, 0x3a, 0x13, 0x1b, 0x59, 0x48, 0x60, 0x41, 0x7a, 0x36, + 0x42, 0x4e, 0x74, 0x66, 0x0d, 0xe9, 0x43, 0xc5, 0xc6, 0x6b, 0xce, 0x83, + 0x02, 0x52, 0xd3, 0x84, 0x45, 0x2d, 0x58, 0xdf, 0xc2, 0xce, 0xec, 0x26, + 0xe5, 0x15, 0x1c, 0x2d, 0xc3, 0x7a, 0x5e, 0x6e, 0xf4, 0x52, 0xd2, 0x02, + 0x0b, 0x8f, 0x60, 0xbb, 0x38, 0x07, 0x12, 0x62, 0xa9, 0x48, 0xe3, 0xa6, + 0xf4, 0x68, 0xe4, 0xdc, 0xa0, 0x0a, 0x0a, 0x63, 0x74, 0x69, 0xa5, 0xfa, + 0x1e, 0x5b, 0x51, 0xb7, 0x9a, 0x42, 0xbe, 0x79, 0x62, 0x21, 0x30, 0x62, + 0x62, 0x28, 0xd8, 0xd7, 0x30, 0x1f, 0xbb, 0xcb, 0x98, 0x33, 0x57, 0x38, + 0x14, 0x24, 0x57, 0xc0, 0x9d, 0x25, 0x17, 0x47, 0xd7, 0x0a, 0xa2, 0xa8, + 0x7f, 0xc9, 0x0e, 0x37, 0x03, 0x63, 0xf3, 0xb1, 0xc0, 0xb2, 0xdc, 0x01, + 0x59, 0x89, 0x69, 0x7d, 0xa5, 0x1d, 0xba, 0x2c, 0x6b, 0xdb, 0xac, 0x9e, + 0x24, 0xed, 0xc4, 0xc8, 0x11, 0x31, 0x9b, 0x6e, 0x90, 0x6b, 0x58, 0x68, + 0x06, 0xa7, 0x73, 0x56, 0x0a, 0xc3, 0x43, 0xc5, 0x22, 0x9f, 0xf3, 0x54, + 0x71, 0x0a, 0x92, 0x64, 0xb9, 0x40, 0xf9, 0x9d, 0xb1, 0x22, 0x90, 0x23, + 0xf8, 0xd3, 0xb5, 0x67, 0x77, 0x88, 0x5f, 0x2b, 0x5a, 0xd4, 0x37, 0xef, + 0x4e, 0x2f, 0x4f, 0xce, 0x43, 0xc7, 0x63, 0xf4, 0xdd, 0xc9, 0xe5, 0xd7, + 0x24, 0xaf, 0x73, 0x6d, 0xe7, 0x53, 0xf6, 0xee, 0xbc, 0x79, 0x73, 0xf0, + 0x96, 0x33, 0xd4, 0xdf, 0x22, 0x46, 0xee, 0x00, 0x3a, 0x03, 0x73, 0x23, + 0x5a, 0x61, 0x26, 0x1d, 0xce, 0x5d, 0xee, 0x35, 0xbd, 0x0c, 0xb5, 0xd3, + 0x07, 0x86, 0xc3, 0x47, 0x28, 0x5c, 0x23, 0xde, 0x70, 0xd5, 0x09, 0x56, + 0x6c, 0xd3, 0xc1, 0xa9, 0x65, 0x3d, 0x8b, 0xd7, 0xb9, 0x0e, 0x3d, 0x8e, + 0x3c, 0x39, 0x91, 0xcd, 0xe1, 0x53, 0x95, 0xab, 0xdb, 0x7b, 0x2e, 0xb0, + 0xa1, 0x0e, 0xc4, 0x14, 0x31, 0xab, 0x24, 0x32, 0xcd, 0x55, 0xa5, 0x91, + 0xeb, 0xb2, 0x1a, 0xb7, 0x4e, 0x3d, 0x62, 0x48, 0x70, 0x2a, 0x67, 0xde, + 0x18, 0xc8, 0xca, 0x26, 0xeb, 0xcb, 0x17, 0xa7, 0xe1, 0x7d, 0x5a, 0xad, + 0x1f, 0x6c, 0x81, 0x66, 0xd7, 0x59, 0xe2, 0x0f, 0x6e, 0xff, 0xcc, 0x9a, + 0x31, 0xcb, 0x2f, 0x34, 0x30, 0xb9, 0x5b, 0xfa, 0xcc, 0xd6, 0xfa, 0xb4, + 0x25, 0x5b, 0xae, 0x46, 0x8d, 0x5a, 0xce, 0xf6, 0x45, 0xaa, 0xac, 0x54, + 0xf1, 0x06, 0x72, 0xec, 0x99, 0x6b, 0x59, 0x03, 0x1a, 0x10, 0xd7, 0xab, + 0xa9, 0x31, 0x3a, 0x67, 0x30, 0x4b, 0x7b, 0xac, 0x92, 0xd9, 0x5b, 0x2b, + 0x25, 0x6e, 0xa9, 0x51, 0x48, 0x88, 0x64, 0x08, 0x17, 0xef, 0x33, 0x45, + 0x59, 0xae, 0x2c, 0x1b, 0x24, 0x0f, 0x09, 0xbb, 0x37, 0xf9, 0xd7, 0xbf, + 0x2e, 0xae, 0xc3, 0xac, 0x29, 0xcc, 0x55, 0xd3, 0x83, 0xdb, 0x31, 0x81, + 0x45, 0x2a, 0xd2, 0xe2, 0x64, 0x95, 0x11, 0x68, 0xc5, 0xb1, 0xdd, 0x75, + 0x1d, 0xea, 0xf7, 0x7b, 0xcd, 0xef, 0xf7, 0xc4, 0xe2, 0xc8, 0x15, 0xe8, + 0x1d, 0x9e, 0xa6, 0xe4, 0x02, 0x87, 0xd2, 0x9b, 0xc9, 0x04, 0x4c, 0x61, + 0x52, 0xac, 0x1e, 0x6e, 0x15, 0x61, 0x89, 0x62, 0xf6, 0xe7, 0x58, 0xa4, + 0x65, 0x8e, 0x1c, 0x47, 0x3c, 0x02, 0x0b, 0xb1, 0x04, 0x90, 0x22, 0x5c, + 0x0b, 0x6c, 0x8a, 0x6f, 0x2b, 0x6a, 0x90, 0xbe, 0x7f, 0xea, 0x02, 0xba, + 0x3d, 0x4b, 0x43, 0x81, 0x2f, 0xcd, 0xa8, 0xe9, 0xa7, 0x8b, 0x3b, 0x2b, + 0x70, 0x49, 0xbf, 0x3e, 0x77, 0xc5, 0x5d, 0x8a, 0x8a, 0x7b, 0xaa, 0x02, + 0x5c, 0x6b, 0xbc, 0x1f, 0x83, 0x43, 0x80, 0x1d, 0x33, 0x06, 0x87, 0xf9, + 0x3a, 0xa8, 0x8d, 0x2b, 0xa9, 0x86, 0xf6, 0x06, 0xa5, 0x26, 0x61, 0x5b, + 0x9e, 0x22, 0xbb, 0x12, 0xec, 0x28, 0xe0, 0x2d, 0x21, 0x4e, 0xbc, 0xee, + 0xfa, 0x8f, 0x7b, 0x3b, 0x3b, 0xbb, 0xfb, 0xbb, 0x9f, 0xbd, 0xd8, 0xd9, + 0xdf, 0xdd, 0xdd, 0xdd, 0xdb, 0xdf, 0xdd, 0xdf, 0xdf, 0xdb, 0xf9, 0x69, + 0x9b, 0x4d, 0x47, 0x77, 0x69, 0x72, 0xef, 0x2a, 0xc9, 0x7f, 0x27, 0xd7, + 0x34, 0xfc, 0x05, 0x2b, 0x71, 0x03, 0x32, 0x97, 0x54, 0x0d, 0xd7, 0x04, + 0x1f, 0x87, 0x4c, 0x20, 0xc1, 0xd7, 0x02, 0x48, 0xb6, 0xf0, 0xd9, 0x8a, + 0x38, 0x83, 0x01, 0x60, 0x32, 0x46, 0xf5, 0xb7, 0x25, 0xcf, 0x74, 0xc4, + 0xd2, 0x00, 0x44, 0x9a, 0xc2, 0xe5, 0x86, 0x5d, 0x4f, 0xb3, 0xd1, 0x08, + 0x01, 0xf0, 0x2e, 0x3d, 0x72, 0x10, 0x31, 0x32, 0xe7, 0xad, 0x90, 0x84, + 0x3a, 0x0d, 0x10, 0x9e, 0x26, 0x07, 0xdd, 0xaf, 0x8e, 0xc8, 0x5d, 0x1a, + 0x92, 0x3b, 0xce, 0x18, 0x95, 0x7e, 0xc2, 0x4c, 0x89, 0x16, 0x29, 0x77, + 0x69, 0x13, 0xd1, 0x55, 0xf2, 0xd9, 0xce, 0xfe, 0x3e, 0x17, 0x8e, 0xf8, + 0xfd, 0x6e, 0x4f, 0x23, 0x0b, 0xc3, 0x70, 0xe9, 0x9e, 0xbb, 0x9d, 0xa4, + 0x0d, 0xd6, 0x3e, 0xc2, 0x79, 0xce, 0x97, 0xb3, 0x24, 0x57, 0x3d, 0x04, + 0xf7, 0xa1, 0x00, 0xc8, 0x30, 0x31, 0xda, 0x90, 0xdd, 0xb3, 0x28, 0x85, + 0x02, 0x93, 0xbc, 0xe4, 0x37, 0xf8, 0xcb, 0x53, 0xcf, 0x39, 0x8e, 0xca, + 0x5c, 0x8a, 0x4c, 0xf2, 0xc3, 0x10, 0xc8, 0x81, 0x8a, 0x91, 0xdd, 0x86, + 0xb2, 0xaa, 0xe6, 0x74, 0xfc, 0x18, 0x0c, 0x7e, 0xef, 0xd9, 0xee, 0x4f, + 0x12, 0xc8, 0xc6, 0x04, 0xee, 0x57, 0x41, 0x4b, 0x83, 0x4d, 0x54, 0x1e, + 0x91, 0x34, 0x30, 0x25, 0x8c, 0xcd, 0x64, 0x70, 0x3d, 0x30, 0x21, 0x41, + 0x0d, 0x87, 0xbd, 0x30, 0x9c, 0x58, 0x10, 0xac, 0xa5, 0x26, 0x3b, 0xd4, + 0x2e, 0xb3, 0x0d, 0x99, 0x6d, 0x57, 0xec, 0x92, 0x95, 0x1a, 0x2f, 0x1b, + 0x74, 0x65, 0x1c, 0x9c, 0x9c, 0x72, 0xbc, 0xca, 0x29, 0x49, 0x60, 0x43, + 0x63, 0x65, 0x08, 0xe9, 0x41, 0xbc, 0xcd, 0x3c, 0xe5, 0xdb, 0xb4, 0xe7, + 0xa0, 0xe5, 0x2d, 0x2c, 0x1e, 0x62, 0x05, 0xdb, 0xdd, 0x45, 0x32, 0x57, + 0x1c, 0x28, 0x92, 0x87, 0x89, 0x9f, 0x15, 0x62, 0x4e, 0x01, 0xdc, 0x22, + 0xe3, 0x10, 0xc3, 0xc7, 0x01, 0x89, 0x57, 0x16, 0x1e, 0xd5, 0x2c, 0xf2, + 0x64, 0x9a, 0xdc, 0xa9, 0xdd, 0x43, 0xc0, 0xeb, 0xbe, 0x52, 0xf7, 0x82, + 0x14, 0xb3, 0x2b, 0xbd, 0x97, 0xa4, 0xe2, 0xc1, 0xe0, 0x3e, 0xb7, 0x25, + 0xef, 0xdf, 0xa7, 0x73, 0xa3, 0xf8, 0xaf, 0x03, 0x5c, 0x36, 0x6f, 0x0e, + 0xbf, 0xd7, 0x67, 0x11, 0x54, 0xe3, 0x90, 0xde, 0x15, 0x9a, 0xb1, 0x5b, + 0x8f, 0x0a, 0x14, 0x55, 0xde, 0xca, 0x21, 0x89, 0x59, 0xac, 0x67, 0x98, + 0x98, 0x62, 0xcc, 0x63, 0xa9, 0xa5, 0xc7, 0x26, 0x14, 0xb4, 0x74, 0x45, + 0xf2, 0x12, 0x23, 0x9f, 0xf7, 0x22, 0x5f, 0x38, 0x3e, 0x9b, 0xd2, 0x9f, + 0x08, 0x74, 0xe0, 0x55, 0xc7, 0xb3, 0x8c, 0xe9, 0x17, 0x84, 0x1f, 0xd1, + 0x9f, 0x12, 0xf6, 0xaa, 0x7f, 0xa1, 0xa9, 0x7c, 0x09, 0xe8, 0xc8, 0x9e, + 0x10, 0x2b, 0xfb, 0x03, 0xca, 0xf1, 0xc0, 0x8d, 0x5e, 0xdd, 0x71, 0x32, + 0xfe, 0x23, 0xf3, 0x16, 0x19, 0x9b, 0xc8, 0x72, 0x5b, 0x5d, 0xd9, 0x85, + 0x91, 0x54, 0xaf, 0xfa, 0x72, 0xc9, 0x76, 0x6a, 0x57, 0x9d, 0x81, 0x47, + 0x31, 0x63, 0xd2, 0x4a, 0xa4, 0x50, 0x9c, 0x6b, 0x9c, 0x05, 0xae, 0x25, + 0xed, 0xae, 0xb4, 0x7e, 0x9a, 0xdd, 0x73, 0x95, 0xbb, 0xab, 0x2b, 0xae, + 0x5b, 0x7e, 0x36, 0xf7, 0x10, 0x91, 0xcc, 0x55, 0xe5, 0xc1, 0x99, 0x95, + 0xd6, 0xa0, 0xb9, 0x59, 0x01, 0x7b, 0x0b, 0x5c, 0x1c, 0x44, 0x07, 0x58, + 0x25, 0x92, 0x85, 0xd0, 0x9c, 0xb8, 0xd9, 0x20, 0x0e, 0xd6, 0xe2, 0xe4, + 0xb4, 0x04, 0x2f, 0xdf, 0x90, 0x33, 0x94, 0xfb, 0xe3, 0x98, 0xb0, 0x59, + 0x36, 0xb7, 0xb0, 0xe7, 0x65, 0x21, 0x80, 0x61, 0x56, 0xaf, 0x77, 0x43, + 0x6c, 0x86, 0xe9, 0x54, 0x11, 0x7a, 0x55, 0x70, 0xc6, 0x1b, 0xe1, 0x64, + 0x26, 0xfd, 0xc5, 0xcd, 0xc2, 0x76, 0xda, 0xf8, 0x95, 0x30, 0x33, 0x0d, + 0xb4, 0xc5, 0xf5, 0x76, 0xfe, 0xf5, 0xf9, 0x20, 0x3a, 0xe6, 0x96, 0x64, + 0x4c, 0x7a, 0x0f, 0x41, 0x83, 0xa2, 0xef, 0x68, 0xb2, 0xd7, 0xcc, 0xc0, + 0xcf, 0x72, 0xfe, 0x0b, 0xad, 0xe9, 0x97, 0x62, 0x34, 0xc1, 0xb7, 0xd5, + 0x5e, 0xa9, 0x21, 0x8b, 0x88, 0x3b, 0xc7, 0xef, 0x74, 0x54, 0x88, 0x3b, + 0xba, 0x6d, 0xf2, 0x3d, 0x64, 0x79, 0x05, 0x5e, 0x41, 0xde, 0x8c, 0x88, + 0x69, 0x82, 0xf5, 0x2d, 0x56, 0xd8, 0x3f, 0x28, 0xdc, 0xc0, 0xe4, 0xd0, + 0xeb, 0x41, 0x1a, 0x08, 0x48, 0x4b, 0xc9, 0xcf, 0x05, 0xd6, 0xc8, 0xb9, + 0xca, 0x05, 0x58, 0x20, 0x4f, 0x34, 0x0c, 0x29, 0x53, 0x07, 0x86, 0xe8, + 0x1b, 0x45, 0x52, 0x3b, 0xae, 0x81, 0x78, 0x65, 0x5f, 0xb0, 0x50, 0xcc, + 0x63, 0x21, 0x26, 0x44, 0x5b, 0x30, 0xd8, 0xf8, 0x7f, 0x01, 0xee, 0x5f, + 0x84, 0x44, 0xed, 0x09, 0x02, 0x00, }; #define BUF_SIZE 0x10000 /* Decompress and send to stdout a gzip-compressed buffer */ diff -Nru curl-7.21.2/src/main.c curl-7.21.3/src/main.c --- curl-7.21.2/src/main.c 2010-10-12 22:59:31.000000000 +0200 +++ curl-7.21.3/src/main.c 2010-12-04 10:26:19.000000000 +0100 @@ -51,6 +51,8 @@ #endif #include "rawstr.h" +#include "xattr.h" + #define CURLseparator "--_curl_--" #ifdef NETWARE @@ -579,6 +581,7 @@ struct curl_httppost *httppost; struct curl_httppost *last_post; struct curl_slist *telnet_options; + struct curl_slist *resolve; HttpReq httpreq; /* for bandwidth limiting features: */ @@ -621,6 +624,7 @@ int default_node_flags; /* default flags to seach for each 'node', which is basically each given URL to transfer */ struct OutStruct *outs; + bool xattr; /* store metadata in extended attributes */ }; #define WARN_PREFIX "Warning: " @@ -866,6 +870,7 @@ " --remote-name-all Use the remote file name for all URLs", " -R/--remote-time Set the remote file's time on the local output", " -X/--request Specify request command to use", + " --resolve Force resolve of HOST:PORT to ADDRESS", " --retry Retry request times if transient problems occur", " --retry-delay When retrying, wait this many seconds between each", " --retry-max-time Retry only within this period", @@ -906,6 +911,7 @@ " --wdebug Turn on Watt-32 debugging", #endif " -w/--write-out What to output after completion", + " --xattr Store metadata in extended file attributes", " -q If used as the first parameter disables .curlrc", NULL }; @@ -1138,7 +1144,7 @@ char *sep2; if((1 == sscanf(input, "%255[^=]=", name)) && - (contp = strchr(input, '='))) { + ((contp = strchr(input, '=')) != NULL)) { /* the input was using the correct format */ /* Allocate the contents */ @@ -1503,12 +1509,15 @@ static int str2num(long *val, const char *str) { - int retcode = 0; - if(str && ISDIGIT(*str)) - *val = atoi(str); - else - retcode = 1; /* badness */ - return retcode; + if(str && ISDIGIT(*str)) { + char *endptr; + long num = strtol(str, &endptr, 10); + if((endptr != str) && (endptr == str + strlen(str))) { + *val = num; + return 0; /* Ok */ + } + } + return 1; /* badness */ } /* @@ -1877,6 +1886,7 @@ {"$C", "ftp-pret", FALSE}, {"$D", "proto", TRUE}, {"$E", "proto-redir", TRUE}, + {"$F", "resolve", TRUE}, {"0", "http1.0", FALSE}, {"1", "tlsv1", FALSE}, {"2", "sslv2", FALSE}, @@ -1953,6 +1963,7 @@ {"y", "speed-time", TRUE}, {"z", "time-cond", TRUE}, {"#", "progress-bar",FALSE}, + {"~", "xattr",FALSE}, }; if(('-' != flag[0]) || @@ -2116,6 +2127,8 @@ break; case 'j': /* --compressed */ + if(toggle && !(curlinfo->features & CURL_VERSION_LIBZ)) + return PARAM_LIBCURL_DOESNT_SUPPORT; config->encoding = toggle; break; @@ -2233,7 +2246,7 @@ default: /* the URL! */ { struct getout *url; - if(config->url_get || (config->url_get=config->url_list)) { + if(config->url_get || ((config->url_get = config->url_list) != NULL)) { /* there's a node here, if it already is filled-in continue to find an "empty" node */ while(config->url_get && (config->url_get->flags&GETOUT_URL)) @@ -2260,6 +2273,8 @@ case '$': /* more options without a short option */ switch(subletter) { case 'a': /* --ftp-ssl */ + if(toggle && !(curlinfo->features & CURL_VERSION_SSL)) + return PARAM_LIBCURL_DOESNT_SUPPORT; config->ftp_ssl = toggle; break; case 'b': /* --ftp-pasv */ @@ -2351,12 +2366,16 @@ GetStr(&config->ftp_alternative_to_user, nextarg); break; case 'v': /* --ftp-ssl-reqd */ + if(toggle && !(curlinfo->features & CURL_VERSION_SSL)) + return PARAM_LIBCURL_DOESNT_SUPPORT; config->ftp_ssl_reqd = toggle; break; case 'w': /* --no-sessionid */ config->disable_sessionid = (bool)(!toggle); break; case 'x': /* --ftp-ssl-control */ + if(toggle && !(curlinfo->features & CURL_VERSION_SSL)) + return PARAM_LIBCURL_DOESNT_SUPPORT; config->ftp_ssl_control = toggle; break; case 'y': /* --ftp-ssl-ccc */ @@ -2429,6 +2448,9 @@ if(proto2num(config, &config->proto_redir, nextarg)) return PARAM_BAD_USE; break; + case 'F': /* --resolve */ + err = add2list(&config->resolve, nextarg); + break; } break; case '#': /* --progress-bar */ @@ -2437,6 +2459,9 @@ else config->progressmode = CURL_PROGRESS_STATS; break; + case '~': /* --xattr */ + config->xattr = toggle; + break; case '0': /* HTTP version 1.0 */ config->httpversion = CURL_HTTP_VERSION_1_0; @@ -2879,7 +2904,7 @@ /* output file */ { struct getout *url; - if(config->url_out || (config->url_out=config->url_list)) { + if(config->url_out || ((config->url_out = config->url_list) != NULL)) { /* there's a node here, if it already is filled-in continue to find an "empty" node */ while(config->url_out && (config->url_out->flags&GETOUT_OUTFILE)) @@ -3007,7 +3032,7 @@ /* we are uploading */ { struct getout *url; - if(config->url_out || (config->url_out=config->url_list)) { + if(config->url_out || ((config->url_out = config->url_list) != NULL)) { /* there's a node here, if it already is filled-in continue to find an "empty" node */ while(config->url_out && (config->url_out->flags&GETOUT_UPLOAD)) @@ -3689,7 +3714,12 @@ * we're using our own way to determine screen width */ colp = curlx_getenv("COLUMNS"); if(colp != NULL) { - bar->width = atoi(colp); + char *endptr; + long num = strtol(colp, &endptr, 10); + if((endptr != colp) && (endptr == colp + strlen(colp)) && (num > 0)) + bar->width = (int)num; + else + bar->width = 79; curl_free(colp); } else @@ -4027,6 +4057,7 @@ curl_slist_free_all(config->headers); curl_slist_free_all(config->telnet_options); curl_slist_free_all(config->mail_rcpt); + curl_slist_free_all(config->resolve); if(config->easy) curl_easy_cleanup(config->easy); @@ -4172,15 +4203,9 @@ static const char * const srchead[]={ "/********* Sample code generated by the curl command line tool **********", - " * Add error code checking where appropriate!", - " * Compile this with a suitable header include path. Then link with ", - " * libcurl.", - " * If you use any *_LARGE options, make sure your compiler figure", - " * out the correct size for the curl_off_t variable.", - " * Read the details for all curl_easy_setopt() options online on:", - " * http://curlm.haxx.se/libcurl/c/curl_easy_setopt.html", + " * All curl_easy_setopt() options are documented at:", + " * http://curl.haxx.se/libcurl/c/curl_easy_setopt.html", " ************************************************************************/", - "[m]", "#include ", "", "int main(int argc, char *argv[])", @@ -4209,17 +4234,8 @@ int i; const char *c; - for(i=0; (c = srchead[i]); i++) { - if(!memcmp((char *)c, "[m]", 3)) { -#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS > 32) - fprintf(out, "#define _FILE_OFFSET_BITS %d " - "/* for pre libcurl 7.19.0 curl_off_t magic */\n", - _FILE_OFFSET_BITS); -#endif - } - else - fprintf(out, "%s\n", c); - } + for(i=0; ((c = srchead[i]) != '\0'); i++) + fprintf(out, "%s\n", c); ptr = easycode; while(ptr) { @@ -4505,7 +4521,10 @@ } env = curlx_getenv("CURL_MEMLIMIT"); if(env) { - curl_memlimit(atoi(env)); + char *endptr; + long num = strtol(env, &endptr, 10); + if((endptr != env) && (endptr == env + strlen(env)) && (num > 0)) + curl_memlimit(num); curl_free(env); } #endif @@ -4777,9 +4796,9 @@ single globbed string. If no upload, we enter the loop once anyway. */ for(up = 0; (!up && !infiles) || - (uploadfile = inglob? + ((uploadfile = inglob? glob_next_url(inglob): - (!up?strdup(infiles):NULL)); + (!up?strdup(infiles):NULL)) != NULL); up++) { int separator = 0; long retry_numretries; @@ -4802,7 +4821,7 @@ /* Here's looping around each globbed URL */ for(i = 0; - (url = urls?glob_next_url(urls):(i?NULL:strdup(url))); + ((url = urls?glob_next_url(urls):(i?NULL:strdup(url))) != NULL); i++) { /* NOTE: In the condition expression in the for() statement above, the 'url' variable is only ever strdup()ed if(i == 0) and thus never @@ -5437,6 +5456,10 @@ my_setopt(curl, CURLOPT_HEADERDATA, &outs); } + if(config->resolve) + /* new in 7.21.3 */ + my_setopt(curl, CURLOPT_RESOLVE, config->resolve); + retry_numretries = config->req_retry; retrystart = cutil_tvnow(); @@ -5621,9 +5644,17 @@ } } } - if(outfile && !curlx_strequal(outfile, "-") && outs.stream) { - int rc = fclose(outs.stream); + int rc; + + if(config->xattr) { + rc = fwrite_xattr(curl, fileno(outs.stream) ); + if(rc) + warnf(config, "Error setting extended attributes: %s\n", + strerror(errno) ); + } + + rc = fclose(outs.stream); if(!res && rc) { /* something went wrong in the writing process */ res = CURLE_WRITE_ERROR; diff -Nru curl-7.21.2/src/Makefile.am curl-7.21.3/src/Makefile.am --- curl-7.21.2/src/Makefile.am 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/src/Makefile.am 2010-10-29 11:09:55.000000000 +0200 @@ -58,7 +58,7 @@ NROFF=env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script EXTRA_DIST = mkhelp.pl makefile.dj Makefile.vc6 Makefile.b32 Makefile.m32 \ - Makefile.riscos curl_config.h.in macos/curl.mcp.xml.sit.hqx \ + curl_config.h.in macos/curl.mcp.xml.sit.hqx \ macos/MACINSTALL.TXT macos/src/curl_GUSIConfig.cpp vc6curlsrc.dsp \ macos/src/macos_main.cpp config-amigaos.h makefile.amiga curl.rc \ Makefile.netware Makefile.inc Makefile.Watcom vc6curlsrc.dsw \ diff -Nru curl-7.21.2/src/makefile.dj curl-7.21.3/src/makefile.dj --- curl-7.21.2/src/makefile.dj 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/src/makefile.dj 2010-12-03 10:22:50.000000000 +0100 @@ -46,9 +46,9 @@ curl_config.h: ifeq ($(IS_UNIX_SHELL),1) - @echo '#include "../lib/config.dos"' > $@ + @echo '#include "../lib/config-dos.h"' > $@ else - @echo #include "../lib/config.dos" > $@ + @echo #include "../lib/config-dos.h" > $@ endif # diff -Nru curl-7.21.2/src/Makefile.in curl-7.21.3/src/Makefile.in --- curl-7.21.2/src/Makefile.in 2010-10-01 22:49:20.000000000 +0200 +++ curl-7.21.3/src/Makefile.in 2010-12-15 15:01:18.000000000 +0100 @@ -70,7 +70,8 @@ PROGRAMS = $(bin_PROGRAMS) am__objects_1 = main.$(OBJEXT) hugehelp.$(OBJEXT) urlglob.$(OBJEXT) \ writeout.$(OBJEXT) writeenv.$(OBJEXT) getpass.$(OBJEXT) \ - homedir.$(OBJEXT) curlutil.$(OBJEXT) os-specific.$(OBJEXT) + homedir.$(OBJEXT) curlutil.$(OBJEXT) os-specific.$(OBJEXT) \ + xattr.$(OBJEXT) am__objects_2 = strtoofft.$(OBJEXT) strdup.$(OBJEXT) rawstr.$(OBJEXT) \ nonblock.$(OBJEXT) am__objects_3 = @@ -331,11 +332,12 @@ $(top_srcdir)/lib/nonblock.c CURL_CFILES = main.c hugehelp.c urlglob.c writeout.c writeenv.c \ - getpass.c homedir.c curlutil.c os-specific.c + getpass.c homedir.c curlutil.c os-specific.c xattr.c CURL_HFILES = hugehelp.h setup.h config-win32.h config-mac.h \ config-riscos.h urlglob.h version.h os-specific.h \ - writeout.h writeenv.h getpass.h homedir.h curlutil.h + writeout.h writeenv.h getpass.h homedir.h curlutil.h \ + xattr.h curl_SOURCES = $(CURL_CFILES) $(CURLX_ONES) $(CURL_HFILES) curl_LDADD = $(top_builddir)/lib/libcurl.la @CURL_LIBS@ @@ -343,7 +345,7 @@ BUILT_SOURCES = hugehelp.c CLEANFILES = hugehelp.c EXTRA_DIST = mkhelp.pl makefile.dj Makefile.vc6 Makefile.b32 Makefile.m32 \ - Makefile.riscos curl_config.h.in macos/curl.mcp.xml.sit.hqx \ + curl_config.h.in macos/curl.mcp.xml.sit.hqx \ macos/MACINSTALL.TXT macos/src/curl_GUSIConfig.cpp vc6curlsrc.dsp \ macos/src/macos_main.cpp config-amigaos.h makefile.amiga curl.rc \ Makefile.netware Makefile.inc Makefile.Watcom vc6curlsrc.dsw \ @@ -455,6 +457,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/urlglob.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeenv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeout.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ diff -Nru curl-7.21.2/src/Makefile.inc curl-7.21.3/src/Makefile.inc --- curl-7.21.2/src/Makefile.inc 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/src/Makefile.inc 2010-11-05 13:59:08.000000000 +0100 @@ -15,11 +15,12 @@ $(top_srcdir)/lib/nonblock.c CURL_CFILES = main.c hugehelp.c urlglob.c writeout.c writeenv.c \ - getpass.c homedir.c curlutil.c os-specific.c + getpass.c homedir.c curlutil.c os-specific.c xattr.c CURL_HFILES = hugehelp.h setup.h config-win32.h config-mac.h \ config-riscos.h urlglob.h version.h os-specific.h \ - writeout.h writeenv.h getpass.h homedir.h curlutil.h + writeout.h writeenv.h getpass.h homedir.h curlutil.h \ + xattr.h curl_SOURCES = $(CURL_CFILES) $(CURLX_ONES) $(CURL_HFILES) diff -Nru curl-7.21.2/src/Makefile.m32 curl-7.21.3/src/Makefile.m32 --- curl-7.21.2/src/Makefile.m32 2010-10-12 22:56:21.000000000 +0200 +++ curl-7.21.3/src/Makefile.m32 2010-12-05 23:04:11.000000000 +0100 @@ -20,7 +20,7 @@ endif # Edit the path below to point to the base of your OpenSSL package. ifndef OPENSSL_PATH -OPENSSL_PATH = ../../openssl-0.9.8o +OPENSSL_PATH = ../../openssl-0.9.8q endif # Edit the path below to point to the base of your LibSSH2 package. ifndef LIBSSH2_PATH diff -Nru curl-7.21.2/src/Makefile.netware curl-7.21.3/src/Makefile.netware --- curl-7.21.2/src/Makefile.netware 2010-10-12 22:56:21.000000000 +0200 +++ curl-7.21.3/src/Makefile.netware 2010-12-05 23:04:11.000000000 +0100 @@ -19,7 +19,7 @@ # Edit the path below to point to the base of your OpenSSL package. ifndef OPENSSL_PATH -OPENSSL_PATH = ../../openssl-0.9.8o +OPENSSL_PATH = ../../openssl-0.9.8q endif # Edit the path below to point to the base of your LibSSH2 package. @@ -418,6 +418,7 @@ @echo $(DL)#define SEND_TYPE_ARG3 int$(DL) >> $@ @echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@ @echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@ + @echo $(DL)#define SIZEOF_SIZE_T 4$(DL) >> $@ @echo $(DL)#define pressanykey PressAnyKeyToContinue$(DL) >> $@ else @echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@ @@ -453,6 +454,7 @@ @echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@ @echo $(DL)#define SEND_TYPE_RETV ssize_t$(DL) >> $@ @echo $(DL)#define SIZEOF_OFF_T 8$(DL) >> $@ + @echo $(DL)#define SIZEOF_SIZE_T 8$(DL) >> $@ @echo $(DL)#define _LARGEFILE 1$(DL) >> $@ ifdef ENABLE_IPV6 @echo $(DL)#define ENABLE_IPV6 1$(DL) >> $@ diff -Nru curl-7.21.2/src/Makefile.riscos curl-7.21.3/src/Makefile.riscos --- curl-7.21.2/src/Makefile.riscos 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/src/Makefile.riscos 1970-01-01 01:00:00.000000000 +0100 @@ -1,64 +0,0 @@ -# Makefile for project cURL -# Generated on Sun,13 Jan 2002.17:11:10 by EasyGCC (0.1.3 [beta 2] (3 Jan 2002)) -# Manually updated -# Contact: easygcc@melotech.co.uk - -# Project objects: -objs = o.hugehelp o.main o.urlglob o.writeout o.writeenv o.rawstr o.nonblock - - -# Compile options: -linkopts = ../lib/libcurl openldap:libraries/libldap/libldap -o curl -compileropts = -mpoke-function-name -IUtilLib: -mthrowback - -# Project target: -curl: $(objs) - gcc $(linkopts) $(objs) - -# Static dependancies: -o.hugehelp: c.hugehelp - gcc $(compileropts) -c -o hugehelp.o c.hugehelp - -o.main: c.main - gcc $(compileropts) -c -o main.o c.main - -o.os-specific: c.os-specific - gcc $(compileropts) -c -o os-specific.o c.os-specific - -o.urlglob: c.urlglob - gcc $(compileropts) -c -o urlglob.o c.urlglob - -o.writeout: c.writeout - gcc $(compileropts) -c -o writeout.o c.writeout - -o.writeenv: c.writeenv - gcc $(compileropts) -c -o writeenv.o c.writeenv - -o.rawstr: ../lib/c.rawstr - gcc $(compileropts) -c -o rawstr.o ../lib/c.rawstr - -o.nonblock: ../lib/c.nonblock - gcc $(compileropts) -c -o nonblock.o ../lib/c.nonblock - -# Dynamic dependancies: -o.hugehelp: c.hugehelp - -o.main: c.main -o.main: h.setup -o.main: h.os-specific -o.main: h.urlglob -o.main: h.writeout -o.main: h.version - -o.os-specific: c.os-specific -o.os-specific: h.setup -o.os-specific: h.os-specific - -o.urlglob: c.urlglob -o.urlglob: h.setup -o.urlglob: h.os-specific -o.urlglob: h.urlglob - -o.writeout: c.writeout -o.writeout: h.writeout - diff -Nru curl-7.21.2/src/Makefile.vc10 curl-7.21.3/src/Makefile.vc10 --- curl-7.21.2/src/Makefile.vc10 2010-10-13 00:04:32.000000000 +0200 +++ curl-7.21.3/src/Makefile.vc10 2010-12-15 15:08:04.000000000 +0100 @@ -91,31 +91,33 @@ !ENDIF RELEASE_OBJS= \ - hugehelpr.obj \ - writeoutr.obj \ - urlglobr.obj \ + curlutilr.obj \ getpassr.obj \ homedirr.obj \ - curlutilr.obj \ - os-specificr.obj \ + hugehelpr.obj \ + mainr.obj \ nonblockr.obj \ + os-specificr.obj \ rawstrr.obj \ strtoofftr.obj \ - mainr.obj \ + urlglobr.obj \ + writeoutr.obj \ + xattrr.obj \ curlr.res DEBUG_OBJS= \ - hugehelpd.obj \ - writeoutd.obj \ - urlglobd.obj \ + curlutild.obj \ getpassd.obj \ homedird.obj \ - curlutild.obj \ - os-specificd.obj \ + hugehelpd.obj \ + maind.obj \ nonblockd.obj \ + os-specificd.obj \ rawstrd.obj \ strtoofftd.obj \ - maind.obj \ + urlglobd.obj \ + writeoutd.obj \ + xattrd.obj \ curld.res ################################################# @@ -258,6 +260,8 @@ $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c strtoofftr.obj: ../lib/strtoofft.c $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c +xattrr.obj: xattr.c + $(CCR) $(CFLAGS) /Fo"$@" xattr.c mainr.obj: main.c $(CCR) $(CFLAGS) /Fo"$@" main.c curlr.res : curl.rc @@ -284,6 +288,8 @@ $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c strtoofftd.obj: ../lib/strtoofft.c $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c +xattrd.obj: xattr.c + $(CCD) $(CFLAGS) /Fo"$@" xattr.c maind.obj: main.c $(CCD) $(CFLAGS) /Fo"$@" main.c curld.res : curl.rc diff -Nru curl-7.21.2/src/Makefile.vc6 curl-7.21.3/src/Makefile.vc6 --- curl-7.21.2/src/Makefile.vc6 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/src/Makefile.vc6 2010-11-12 23:29:29.000000000 +0100 @@ -91,31 +91,33 @@ !ENDIF RELEASE_OBJS= \ - hugehelpr.obj \ - writeoutr.obj \ - urlglobr.obj \ + curlutilr.obj \ getpassr.obj \ homedirr.obj \ - curlutilr.obj \ - os-specificr.obj \ + hugehelpr.obj \ + mainr.obj \ nonblockr.obj \ + os-specificr.obj \ rawstrr.obj \ strtoofftr.obj \ - mainr.obj \ + urlglobr.obj \ + writeoutr.obj \ + xattrr.obj \ curlr.res DEBUG_OBJS= \ - hugehelpd.obj \ - writeoutd.obj \ - urlglobd.obj \ + curlutild.obj \ getpassd.obj \ homedird.obj \ - curlutild.obj \ - os-specificd.obj \ + hugehelpd.obj \ + maind.obj \ nonblockd.obj \ + os-specificd.obj \ rawstrd.obj \ strtoofftd.obj \ - maind.obj \ + urlglobd.obj \ + writeoutd.obj \ + xattrd.obj \ curld.res ################################################# @@ -258,6 +260,8 @@ $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c strtoofftr.obj: ../lib/strtoofft.c $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c +xattrr.obj: xattr.c + $(CCR) $(CFLAGS) /Fo"$@" xattr.c mainr.obj: main.c $(CCR) $(CFLAGS) /Fo"$@" main.c curlr.res : curl.rc @@ -284,6 +288,8 @@ $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c strtoofftd.obj: ../lib/strtoofft.c $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c +xattrd.obj: xattr.c + $(CCD) $(CFLAGS) /Fo"$@" xattr.c maind.obj: main.c $(CCD) $(CFLAGS) /Fo"$@" main.c curld.res : curl.rc diff -Nru curl-7.21.2/src/Makefile.vc8 curl-7.21.3/src/Makefile.vc8 --- curl-7.21.2/src/Makefile.vc8 2010-10-13 00:04:32.000000000 +0200 +++ curl-7.21.3/src/Makefile.vc8 2010-12-15 15:08:04.000000000 +0100 @@ -91,31 +91,33 @@ !ENDIF RELEASE_OBJS= \ - hugehelpr.obj \ - writeoutr.obj \ - urlglobr.obj \ + curlutilr.obj \ getpassr.obj \ homedirr.obj \ - curlutilr.obj \ - os-specificr.obj \ + hugehelpr.obj \ + mainr.obj \ nonblockr.obj \ + os-specificr.obj \ rawstrr.obj \ strtoofftr.obj \ - mainr.obj \ + urlglobr.obj \ + writeoutr.obj \ + xattrr.obj \ curlr.res DEBUG_OBJS= \ - hugehelpd.obj \ - writeoutd.obj \ - urlglobd.obj \ + curlutild.obj \ getpassd.obj \ homedird.obj \ - curlutild.obj \ - os-specificd.obj \ + hugehelpd.obj \ + maind.obj \ nonblockd.obj \ + os-specificd.obj \ rawstrd.obj \ strtoofftd.obj \ - maind.obj \ + urlglobd.obj \ + writeoutd.obj \ + xattrd.obj \ curld.res ################################################# @@ -258,6 +260,8 @@ $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c strtoofftr.obj: ../lib/strtoofft.c $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c +xattrr.obj: xattr.c + $(CCR) $(CFLAGS) /Fo"$@" xattr.c mainr.obj: main.c $(CCR) $(CFLAGS) /Fo"$@" main.c curlr.res : curl.rc @@ -284,6 +288,8 @@ $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c strtoofftd.obj: ../lib/strtoofft.c $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c +xattrd.obj: xattr.c + $(CCD) $(CFLAGS) /Fo"$@" xattr.c maind.obj: main.c $(CCD) $(CFLAGS) /Fo"$@" main.c curld.res : curl.rc diff -Nru curl-7.21.2/src/Makefile.vc9 curl-7.21.3/src/Makefile.vc9 --- curl-7.21.2/src/Makefile.vc9 2010-10-13 00:04:32.000000000 +0200 +++ curl-7.21.3/src/Makefile.vc9 2010-12-15 15:08:04.000000000 +0100 @@ -91,31 +91,33 @@ !ENDIF RELEASE_OBJS= \ - hugehelpr.obj \ - writeoutr.obj \ - urlglobr.obj \ + curlutilr.obj \ getpassr.obj \ homedirr.obj \ - curlutilr.obj \ - os-specificr.obj \ + hugehelpr.obj \ + mainr.obj \ nonblockr.obj \ + os-specificr.obj \ rawstrr.obj \ strtoofftr.obj \ - mainr.obj \ + urlglobr.obj \ + writeoutr.obj \ + xattrr.obj \ curlr.res DEBUG_OBJS= \ - hugehelpd.obj \ - writeoutd.obj \ - urlglobd.obj \ + curlutild.obj \ getpassd.obj \ homedird.obj \ - curlutild.obj \ - os-specificd.obj \ + hugehelpd.obj \ + maind.obj \ nonblockd.obj \ + os-specificd.obj \ rawstrd.obj \ strtoofftd.obj \ - maind.obj \ + urlglobd.obj \ + writeoutd.obj \ + xattrd.obj \ curld.res ################################################# @@ -258,6 +260,8 @@ $(CCR) $(CFLAGS) /Fo"$@" ../lib/rawstr.c strtoofftr.obj: ../lib/strtoofft.c $(CCR) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c +xattrr.obj: xattr.c + $(CCR) $(CFLAGS) /Fo"$@" xattr.c mainr.obj: main.c $(CCR) $(CFLAGS) /Fo"$@" main.c curlr.res : curl.rc @@ -284,6 +288,8 @@ $(CCD) $(CFLAGS) /Fo"$@" ../lib/rawstr.c strtoofftd.obj: ../lib/strtoofft.c $(CCD) $(CFLAGS) /Fo"$@" ../lib/strtoofft.c +xattrd.obj: xattr.c + $(CCD) $(CFLAGS) /Fo"$@" xattr.c maind.obj: main.c $(CCD) $(CFLAGS) /Fo"$@" main.c curld.res : curl.rc diff -Nru curl-7.21.2/src/Makefile.Watcom curl-7.21.3/src/Makefile.Watcom --- curl-7.21.2/src/Makefile.Watcom 2010-10-12 22:56:21.000000000 +0200 +++ curl-7.21.3/src/Makefile.Watcom 2010-12-05 23:04:11.000000000 +0100 @@ -5,9 +5,6 @@ !ifndef %watcom !error WATCOM environment variable not set! -!else -SYS_INCL = -I$(%watcom)\h\nt -I$(%watcom)\h -SYS_LIBS = $(%watcom)\lib386\nt;$(%watcom)\lib386 !endif !ifdef %libname @@ -33,18 +30,30 @@ ! endif !endif +!ifdef __LINUX__ +DS = / +CP = cp +MD = mkdir -p +RD = rmdir -p +RM = rm -f +!else +DS = $(X)\$(X) +CP = copy 2>NUL +MD = mkdir +RD = rmdir /q /s 2>NUL !if $(__VERSION__) < 1250 RM = del /q /f 2>NUL !else RM = rm -f !endif -MD = mkdir -RD = rmdir /q /s 2>NUL -CP = copy +!endif + +SYS_INCL = -I$(%watcom)$(DS)h$(DS)nt -I$(%watcom)$(DS)h +SYS_LIBS = $(%watcom)$(DS)lib386$(DS)nt;$(%watcom)$(DS)lib386 CFLAGS = -3r -mf -hc -zff -zgf -zq -zm -s -fr=con -w2 -fpi -oilrtfm & -wcd=201 -bt=nt -bc -d+ -dWIN32 -dHAVE_STRTOLL & - -I..\include -I..\lib $(SYS_INCL) + -I..$(DS)include -I..$(DS)lib $(SYS_INCL) !ifdef %debug DEBUG = -dDEBUG=1 -dDEBUGBUILD @@ -63,39 +72,39 @@ !ifdef %zlib_root ZLIB_ROOT = $(%zlib_root) !else -ZLIB_ROOT = ..\..\zlib-1.2.5 +ZLIB_ROOT = ..$(DS)..$(DS)zlib-1.2.5 !endif !ifdef %libssh2_root LIBSSH2_ROOT = $(%libssh2_root) !else -LIBSSH2_ROOT = ..\..\libssh2-1.2.7 +LIBSSH2_ROOT = ..$(DS)..$(DS)libssh2-1.2.7 !endif !ifdef %librtmp_root LIBRTMP_ROOT = $(%librtmp_root) !else -LIBRTMP_ROOT = ..\..\librtmp-2.3 +LIBRTMP_ROOT = ..$(DS)..$(DS)rtmpdump-2.3 !endif !ifdef %openssl_root OPENSSL_ROOT = $(%openssl_root) !else -OPENSSL_ROOT = ..\..\openssl-0.9.8o +OPENSSL_ROOT = ..$(DS)..$(DS)openssl-0.9.8q !endif !ifdef %ares_root ARES_ROOT = $(%ares_root) !else -ARES_ROOT = ..\ares +ARES_ROOT = ..$(DS)ares !endif !ifdef %use_ssl -CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I$(OPENSSL_ROOT)\inc32 +CFLAGS += -wcd=138 -dUSE_OPENSSL -dUSE_SSLEAY -I$(OPENSSL_ROOT)$(DS)inc32 !endif OBJ_DIR = WC_Win32.obj -LINK_ARG = $(OBJ_DIR)\wlink.arg +LINK_ARG = $(OBJ_DIR)$(DS)wlink.arg # In order to process Makefile.inc wmake must be called with -u switch! !ifndef %MAKEFLAGS @@ -114,9 +123,14 @@ CFLAGS += -br OBJS += $(CURLX_SOURCES:.c=.obj) !endif +!ifdef __LINUX__ +OBJS = $OBJ_DIR/$(OBJS: = $OBJ_DIR/) + +!else OBJS = $OBJ_DIR\$(OBJS: = $OBJ_DIR\) +!endif -RESOURCE = $(OBJ_DIR)\curl.res +RESOURCE = $(OBJ_DIR)$(DS)curl.res all: hugehelp.c $(OBJ_DIR) curl.exe .SYMBOLIC @echo Welcome to cURL @@ -142,10 +156,10 @@ $(LD) name $^@ @$]@ $(RESOURCE): curl.rc - $(RC) $(DEBUG) -q -r -zm -I..\include $(SYS_INCL) $[@ -fo=$^@ + $(RC) $(DEBUG) -q -r -zm -bt=nt -I..$(DS)include $(SYS_INCL) $[@ -fo=$^@ # suffix search path - vpath-like hack -.c: ..\lib +.c: ..$(DS)lib .ERASE .c{$(OBJ_DIR)}.obj: @@ -163,27 +177,27 @@ @%append $^@ res=$(RESOURCE) libpath $(SYS_LIBS) !ifdef %curl_static @%append $^@ library wldap32.lib - @%append $^@ library ..\lib\$(LIBNAME).lib + @%append $^@ library ..$(DS)lib$(DS)$(LIBNAME).lib !ifdef %use_zlib - @%append $^@ library $(ZLIB_ROOT)\zlib.lib + @%append $^@ library $(ZLIB_ROOT)$(DS)zlib.lib !endif !ifdef %use_rtmp - @%append $^@ library $(LIBRTMP_ROOT)\librtmp\librtmp.lib, winmm.lib + @%append $^@ library $(LIBRTMP_ROOT)$(DS)librtmp$(DS)librtmp.lib, winmm.lib !endif !ifdef %use_ssh2 - @%append $^@ library $(LIBSSH2_ROOT)\win32\libssh2.lib + @%append $^@ library $(LIBSSH2_ROOT)$(DS)win32$(DS)libssh2.lib !endif !ifdef %use_ssl - @%append $^@ library $(OPENSSL_ROOT)\out32\libeay32.lib, $(OPENSSL_ROOT)\out32\ssleay32.lib + @%append $^@ library $(OPENSSL_ROOT)$(DS)out32$(DS)libeay32.lib, $(OPENSSL_ROOT)$(DS)out32$(DS)ssleay32.lib !endif !ifdef %use_ares - @%append $^@ library $(ARES_ROOT)\cares.lib + @%append $^@ library $(ARES_ROOT)$(DS)cares.lib !endif !else - @%append $^@ library ..\lib\$(LIBNAME)_imp.lib + @%append $^@ library ..$(DS)lib$(DS)$(LIBNAME)_imp.lib !endif !ifeq USE_WATT32 1 - @%append $^@ library $(%watt_root)\lib\wattcpw_imp.lib + @%append $^@ library $(%watt_root)$(DS)lib$(DS)wattcpw_imp.lib !else @%append $^@ library ws2_32.lib !endif diff -Nru curl-7.21.2/src/vc6curlsrc.dsp curl-7.21.3/src/vc6curlsrc.dsp --- curl-7.21.2/src/vc6curlsrc.dsp 2010-03-20 22:51:44.000000000 +0100 +++ curl-7.21.3/src/vc6curlsrc.dsp 2010-11-08 08:56:20.000000000 +0100 @@ -185,6 +185,10 @@ SOURCE=.\writeout.c # End Source File +# Begin Source File + +SOURCE=.\xattr.c +# End Source File # End Group # Begin Group "Header Files" @@ -245,6 +249,10 @@ SOURCE=.\writeout.h # End Source File +# Begin Source File + +SOURCE=.\xattr.h +# End Source File # End Group # Begin Group "Resource Files" diff -Nru curl-7.21.2/src/version.h curl-7.21.3/src/version.h --- curl-7.21.2/src/version.h 2010-10-13 00:04:32.000000000 +0200 +++ curl-7.21.3/src/version.h 2010-12-15 15:08:04.000000000 +0100 @@ -26,7 +26,7 @@ #define CURL_NAME "curl" #define CURL_COPYRIGHT LIBCURL_COPYRIGHT -#define CURL_VERSION "7.21.2" +#define CURL_VERSION "7.21.3" #define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR #define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR #define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH diff -Nru curl-7.21.2/src/xattr.c curl-7.21.3/src/xattr.c --- curl-7.21.2/src/xattr.c 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/src/xattr.c 2010-12-01 19:45:49.000000000 +0100 @@ -0,0 +1,75 @@ +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 2010, Daniel Stenberg, , 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 http://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. + * + ***************************************************************************/ + +/* client-local setup.h */ +#include "setup.h" +#include +#include "xattr.h" + +#ifdef HAVE_FSETXATTR +#include +#include +#include /* include header from libc, not from libattr */ + +/* mapping table of curl metadata to extended attribute names */ +static const struct xattr_mapping { + const char *attr; /* name of the xattr */ + CURLINFO info; +} mappings[] = { + /* mappings proposed by + * http://freedesktop.org/wiki/CommonExtendedAttributes + */ + { "user.xdg.origin.url", CURLINFO_EFFECTIVE_URL }, + { "user.mime_type", CURLINFO_CONTENT_TYPE }, + { NULL, CURLINFO_NONE } /* last element, abort loop here */ +}; + +/* store metadata from the curl request alongside the downloaded + * file using extended attributes + */ +int fwrite_xattr(CURL *curl, int fd) +{ + int i = 0; + int err = 0; + /* loop through all xattr-curlinfo pairs and abort on a set error */ + while ( err == 0 && mappings[i].attr != NULL ) { + char *value = NULL; + CURLcode rc = curl_easy_getinfo(curl, mappings[i].info, &value); + if ( rc == CURLE_OK && value ) { +#ifdef HAVE_FSETXATTR_6 + err = fsetxattr( fd, mappings[i].attr, value, strlen(value), 0, 0 ); +#elif defined(HAVE_FSETXATTR_5) + err = fsetxattr( fd, mappings[i].attr, value, strlen(value), 0 ); +#endif + } + i++; + } + return err; +} +#else +int fwrite_xattr(CURL *curl, int fd) +{ + (void)curl; + (void)fd; + return 0; +} +#endif diff -Nru curl-7.21.2/src/xattr.h curl-7.21.3/src/xattr.h --- curl-7.21.2/src/xattr.h 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/src/xattr.h 2010-11-10 10:44:44.000000000 +0100 @@ -0,0 +1,26 @@ +#ifndef __XATTR_H +#define __XATTR_H +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 2010, Daniel Stenberg, , 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 http://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. + * + ***************************************************************************/ +int fwrite_xattr(CURL *curl, int fd); + +#endif diff -Nru curl-7.21.2/tests/data/Makefile.am curl-7.21.3/tests/data/Makefile.am --- curl-7.21.2/tests/data/Makefile.am 2010-10-01 22:48:40.000000000 +0200 +++ curl-7.21.3/tests/data/Makefile.am 2010-11-10 15:34:55.000000000 +0100 @@ -68,7 +68,7 @@ test1108 test1109 test1110 test1111 test1112 test129 test567 test568 \ test569 test570 test571 test572 test804 test805 test806 test807 test573 \ test313 test1115 test578 test579 test1116 test1200 test1201 test1202 \ - test1203 test1117 + test1203 test1117 test1118 test1119 test1120 filecheck: @mkdir test-place; \ diff -Nru curl-7.21.2/tests/data/Makefile.in curl-7.21.3/tests/data/Makefile.in --- curl-7.21.2/tests/data/Makefile.in 2010-10-01 22:49:20.000000000 +0200 +++ curl-7.21.3/tests/data/Makefile.in 2010-12-15 15:01:18.000000000 +0100 @@ -305,7 +305,7 @@ test1108 test1109 test1110 test1111 test1112 test129 test567 test568 \ test569 test570 test571 test572 test804 test805 test806 test807 test573 \ test313 test1115 test578 test579 test1116 test1200 test1201 test1202 \ - test1203 test1117 + test1203 test1117 test1118 test1119 test1120 all: all-am @@ -319,9 +319,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/data/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/data/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign tests/data/Makefile + $(AUTOMAKE) --gnu tests/data/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/tests/data/test1057 curl-7.21.3/tests/data/test1057 --- curl-7.21.2/tests/data/test1057 2010-03-20 22:51:44.000000000 +0100 +++ curl-7.21.3/tests/data/test1057 2010-10-29 12:38:58.000000000 +0200 @@ -45,6 +45,7 @@ SIZE 1057 REST 52 RETR 1057 +ABOR QUIT diff -Nru curl-7.21.2/tests/data/test1118 curl-7.21.3/tests/data/test1118 --- curl-7.21.2/tests/data/test1118 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/tests/data/test1118 2010-10-19 19:05:10.000000000 +0200 @@ -0,0 +1,55 @@ + + + +HTTP +HTTP GET + + + +# +# Server-side + + +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- + + + +# +# Client-side + + +http + + +URL without slash and @-letter in query + + +http://%HOSTIP:%HTTPPORT?email=name@example.com/1118 + + + +# +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +GET /?email=name@example.com/1118 HTTP/1.1 +Host: %HOSTIP:%HTTPPORT +Accept: */* + + + + diff -Nru curl-7.21.2/tests/data/test1119 curl-7.21.3/tests/data/test1119 --- curl-7.21.2/tests/data/test1119 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/tests/data/test1119 2010-12-01 19:45:49.000000000 +0100 @@ -0,0 +1,24 @@ + + + +symbols-in-versions + + + +# +# Client-side + + +none + + + +Verify that symbols-in-versions and headers are in sync + + + +%SRCDIR/symbol-scan.pl %SRCDIR/.. ../include/curl + + + + diff -Nru curl-7.21.2/tests/data/test1120 curl-7.21.3/tests/data/test1120 --- curl-7.21.2/tests/data/test1120 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/tests/data/test1120 2010-11-10 15:34:01.000000000 +0100 @@ -0,0 +1,44 @@ + + + +FTP +PORT +RETR +421 + + +# Server-side + + +REPLY CWD 421 Timeout! + + + +# Client-side + + +ftp + + +FTP with 421 timeout response + + +ftp://%HOSTIP:%FTPPORT/a/path/1120 + + + +# Verify data after the test has been "shot" + +# Strip all valid kinds of PORT and EPRT that curl can send + +USER anonymous +PASS ftp@example.com +PWD +CWD a + +# CURLE_OPERATION_TIMEDOUT is 28 + +28 + + + diff -Nru curl-7.21.2/tests/data/test1203 curl-7.21.3/tests/data/test1203 --- curl-7.21.2/tests/data/test1203 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/tests/data/test1203 2010-10-14 22:18:55.000000000 +0200 @@ -29,7 +29,7 @@ Gopher IPv6 index --g gopher://%HOSTIP:%GOPHER6PORT/1/moo/1203 +-g gopher://%HOST6IP:%GOPHER6PORT/1/moo/1203 diff -Nru curl-7.21.2/tests/data/test135 curl-7.21.3/tests/data/test135 --- curl-7.21.2/tests/data/test135 2010-03-20 22:51:44.000000000 +0100 +++ curl-7.21.3/tests/data/test135 2010-10-29 12:38:58.000000000 +0200 @@ -47,6 +47,7 @@ SIZE 135 REST 4 RETR 135 +ABOR QUIT diff -Nru curl-7.21.2/tests/data/test191 curl-7.21.3/tests/data/test191 --- curl-7.21.2/tests/data/test191 2010-03-20 22:51:44.000000000 +0100 +++ curl-7.21.3/tests/data/test191 2010-10-19 19:28:22.000000000 +0200 @@ -15,7 +15,7 @@ FTP URL with ?-letters in username and password -"ftp://use?r:pass?word@%HOSTIP:%FTPPORT/191" +"ftp://use%3fr:pass%3fword@%HOSTIP:%FTPPORT/191" diff -Nru curl-7.21.2/tests/FILEFORMAT curl-7.21.3/tests/FILEFORMAT --- curl-7.21.2/tests/FILEFORMAT 2010-10-10 23:22:27.000000000 +0200 +++ curl-7.21.3/tests/FILEFORMAT 2010-11-03 11:12:27.000000000 +0100 @@ -224,7 +224,7 @@ Variables are first substituted as in the section. - + command line to run, there's a bunch of %variables that get replaced accordingly. @@ -237,6 +237,9 @@ number given in the CONNECT request will be used to identify which test that is being run, if the proxy host name is said to start with 'test'. +Set type="perl" to write the test case as a perl script. It implies that +there's no memory debugging and valgrind gets shut off for this test. + Set option="no-output" to prevent the test script to slap on the --output argument that directs the output to a file. The --output is also not added if the verify/stdout section is used. diff -Nru curl-7.21.2/tests/ftpserver.pl curl-7.21.3/tests/ftpserver.pl --- curl-7.21.2/tests/ftpserver.pl 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/tests/ftpserver.pl 2010-11-10 15:28:47.000000000 +0100 @@ -26,7 +26,7 @@ # In December 2009 we started remaking the server to support more protocols # that are similar in spirit. Like POP3, IMAP and SMTP in addition to the FTP # it already supported since a long time. Note that it still only supports one -# protocol per invoke. You need to start mulitple servers to support multiple +# protocol per invoke. You need to start multiple servers to support multiple # protocols simultaneously. # # It is meant to exercise curl, it is not meant to be a fully working diff -Nru curl-7.21.2/tests/libtest/first.c curl-7.21.3/tests/libtest/first.c --- curl-7.21.2/tests/libtest/first.c 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/tests/libtest/first.c 2010-12-01 19:45:49.000000000 +0100 @@ -59,7 +59,10 @@ /* this enables the fail-on-alloc-number-N functionality */ env = curl_getenv("CURL_MEMLIMIT"); if(env) { - curl_memlimit(atoi(env)); + char *endptr; + long num = strtol(env, &endptr, 10); + if((endptr != env) && (endptr == env + strlen(env)) && (num > 0)) + curl_memlimit(num); curl_free(env); } #endif diff -Nru curl-7.21.2/tests/libtest/lib521.c curl-7.21.3/tests/libtest/lib521.c --- curl-7.21.2/tests/libtest/lib521.c 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/tests/libtest/lib521.c 2010-12-01 19:45:49.000000000 +0100 @@ -28,7 +28,7 @@ } test_setopt(curl, CURLOPT_URL, URL); - test_setopt(curl, CURLOPT_PORT, atoi(libtest_arg2)); + test_setopt(curl, CURLOPT_PORT, strtol(libtest_arg2, NULL, 10)); test_setopt(curl, CURLOPT_USERPWD, "xxx:yyy"); test_setopt(curl, CURLOPT_VERBOSE, 1L); diff -Nru curl-7.21.2/tests/libtest/lib562.c curl-7.21.3/tests/libtest/lib562.c --- curl-7.21.2/tests/libtest/lib562.c 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/tests/libtest/lib562.c 2010-12-01 19:45:49.000000000 +0100 @@ -57,7 +57,7 @@ test_setopt(curl, CURLOPT_VERBOSE, 1L); /* set port number */ - test_setopt(curl, CURLOPT_PORT, atoi(libtest_arg2) ); + test_setopt(curl, CURLOPT_PORT, strtol(libtest_arg2, NULL, 10)); /* specify target */ test_setopt(curl,CURLOPT_URL, URL); diff -Nru curl-7.21.2/tests/Makefile.am curl-7.21.3/tests/Makefile.am --- curl-7.21.2/tests/Makefile.am 2010-09-18 23:00:22.000000000 +0200 +++ curl-7.21.3/tests/Makefile.am 2010-11-03 11:24:54.000000000 +0100 @@ -5,7 +5,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. +# Copyright (C) 1998 - 2010, Daniel Stenberg, , 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,7 +27,7 @@ FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl valgrind.pm ftp.pm \ sshserver.pl sshhelp.pm testcurl.1 runtests.1 $(HTMLPAGES) $(PDFPAGES) \ CMakeLists.txt certs/scripts/*.sh certs/Server* certs/EdelCurlRoot* \ - serverhelp.pm tftpserver.pl rtspserver.pl directories.pm + serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl SUBDIRS = data server libtest diff -Nru curl-7.21.2/tests/Makefile.in curl-7.21.3/tests/Makefile.in --- curl-7.21.2/tests/Makefile.in 2010-10-01 22:49:20.000000000 +0200 +++ curl-7.21.3/tests/Makefile.in 2010-12-15 15:01:18.000000000 +0100 @@ -21,7 +21,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. +# Copyright (C) 1998 - 2010, Daniel Stenberg, , et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms @@ -276,7 +276,7 @@ FILEFORMAT README stunnel.pem memanalyze.pl testcurl.pl valgrind.pm ftp.pm \ sshserver.pl sshhelp.pm testcurl.1 runtests.1 $(HTMLPAGES) $(PDFPAGES) \ CMakeLists.txt certs/scripts/*.sh certs/Server* certs/EdelCurlRoot* \ - serverhelp.pm tftpserver.pl rtspserver.pl directories.pm + serverhelp.pm tftpserver.pl rtspserver.pl directories.pm symbol-scan.pl SUBDIRS = data server libtest PERLFLAGS = -I$(srcdir) @@ -303,9 +303,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign tests/Makefile + $(AUTOMAKE) --gnu tests/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru curl-7.21.2/tests/runtests.pl curl-7.21.3/tests/runtests.pl --- curl-7.21.2/tests/runtests.pl 2010-09-18 23:00:23.000000000 +0200 +++ curl-7.21.3/tests/runtests.pl 2010-12-15 14:49:10.000000000 +0100 @@ -2246,6 +2246,7 @@ my $why; my %feature; my $cmd; + my $disablevalgrind; # copy test number to a global scope var, this allows # testnum checking when starting test harness servers. @@ -2485,9 +2486,6 @@ @reply=@replycheck; } - # curl command to run - my @curlcmd= fixarray ( getpart("client", "command") ); - # this is the valid protocol blurb curl should generate my @protocol= fixarray ( getpart("verify", "protocol") ); @@ -2541,12 +2539,12 @@ my @blaha; ($cmd, @blaha)= getpart("client", "command"); - # make some nice replace operations - $cmd =~ s/\n//g; # no newlines please - - # substitute variables in the command line - subVariables \$cmd; - + if($cmd) { + # make some nice replace operations + $cmd =~ s/\n//g; # no newlines please + # substitute variables in the command line + subVariables \$cmd; + } if($curl_debug) { unlink($memdump); } @@ -2597,14 +2595,31 @@ } } + my $CMDLINE; my $cmdargs; - if(!$tool) { + my $cmdtype = $cmdhash{'type'} || "default"; + if($cmdtype eq "perl") { + # run the command line prepended with "perl" + $cmdargs ="$cmd"; + $CMDLINE = "perl "; + $tool=$CMDLINE; + $disablevalgrind=1; + } + elsif(!$tool) { # run curl, add --verbose for debug information output $cmdargs ="$out --include --verbose --trace-time $cmd"; } else { $cmdargs = " $cmd"; # $cmd is the command line for the test file $CURLOUT = $STDOUT; # sends received data to stdout + + $CMDLINE="$LIBDIR/$tool"; + if(! -f $CMDLINE) { + print "The tool set in the test case for this: '$tool' does not exist\n"; + timestampskippedevents($testnum); + return -1; + } + $DBGCURL=$CMDLINE; } my @stdintest = getpart("client", "stdin"); @@ -2615,23 +2630,13 @@ $cmdargs .= " <$stdinfile"; } - my $CMDLINE; if(!$tool) { $CMDLINE="$CURL"; } - else { - $CMDLINE="$LIBDIR/$tool"; - if(! -f $CMDLINE) { - print "The tool set in the test case for this: '$tool' does not exist\n"; - timestampskippedevents($testnum); - return -1; - } - $DBGCURL=$CMDLINE; - } my $usevalgrind; - if($valgrind) { + if($valgrind && !$disablevalgrind) { my @valgrindoption = getpart("verify", "valgrind"); if((!@valgrindoption) || ($valgrindoption[0] !~ /disable/)) { $usevalgrind = 1; @@ -3069,7 +3074,8 @@ if($curl_debug) { if(! -f $memdump) { - logmsg "\n** ALERT! memory debugging with no output file?\n"; + logmsg "\n** ALERT! memory debugging with no output file?\n" + if(!$cmdtype eq "perl"); } else { my @memdata=`$memanalyze $memdump`; @@ -3131,7 +3137,7 @@ $ok .= "v"; } else { - if(!$short) { + if(!$short && !$disablevalgrind) { logmsg " valgrind SKIPPED\n"; } $ok .= "-"; # skipped diff -Nru curl-7.21.2/tests/server/Makefile.in curl-7.21.3/tests/server/Makefile.in --- curl-7.21.2/tests/server/Makefile.in 2010-10-01 22:49:21.000000000 +0200 +++ curl-7.21.3/tests/server/Makefile.in 2010-12-15 15:01:19.000000000 +0100 @@ -410,22 +410,26 @@ resolve_LDADD = @TEST_SERVER_LIBS@ resolve_CFLAGS = $(AM_CFLAGS) rtspd_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ + server_sockaddr.h \ rtspd.c rtspd_LDADD = @TEST_SERVER_LIBS@ rtspd_CFLAGS = $(AM_CFLAGS) sockfilt_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ + server_sockaddr.h \ sockfilt.c \ $(top_srcdir)/lib/inet_pton.c sockfilt_LDADD = @TEST_SERVER_LIBS@ sockfilt_CFLAGS = $(AM_CFLAGS) sws_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ + server_sockaddr.h \ sws.c sws_LDADD = @TEST_SERVER_LIBS@ sws_CFLAGS = $(AM_CFLAGS) tftpd_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ + server_sockaddr.h \ tftpd.c \ tftp.h diff -Nru curl-7.21.2/tests/server/Makefile.inc curl-7.21.3/tests/server/Makefile.inc --- curl-7.21.2/tests/server/Makefile.inc 2010-09-18 23:00:23.000000000 +0200 +++ curl-7.21.3/tests/server/Makefile.inc 2010-12-01 19:45:49.000000000 +0100 @@ -39,22 +39,26 @@ resolve_CFLAGS = $(AM_CFLAGS) rtspd_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ + server_sockaddr.h \ rtspd.c rtspd_LDADD = @TEST_SERVER_LIBS@ rtspd_CFLAGS = $(AM_CFLAGS) sockfilt_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ + server_sockaddr.h \ sockfilt.c \ $(top_srcdir)/lib/inet_pton.c sockfilt_LDADD = @TEST_SERVER_LIBS@ sockfilt_CFLAGS = $(AM_CFLAGS) sws_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ + server_sockaddr.h \ sws.c sws_LDADD = @TEST_SERVER_LIBS@ sws_CFLAGS = $(AM_CFLAGS) tftpd_SOURCES = $(CURLX_SRCS) $(CURLX_HDRS) $(USEFUL) $(UTIL) \ + server_sockaddr.h \ tftpd.c \ tftp.h tftpd_LDADD = @TEST_SERVER_LIBS@ diff -Nru curl-7.21.2/tests/server/rtspd.c curl-7.21.3/tests/server/rtspd.c --- curl-7.21.2/tests/server/rtspd.c 2010-09-18 23:00:23.000000000 +0200 +++ curl-7.21.3/tests/server/rtspd.c 2010-12-03 10:22:50.000000000 +0100 @@ -58,6 +58,7 @@ #include "curlx.h" /* from the private lib dir */ #include "getpart.h" #include "util.h" +#include "server_sockaddr.h" /* include memdebug.h last */ #include "memdebug.h" @@ -530,8 +531,8 @@ /* if the host name starts with test, the port number used in the CONNECT line will be used as test number! */ char *portp = strchr(doc, ':'); - if(portp) - req->testno = atoi(portp+1); + if(portp && (*(portp+1) != '\0') && ISDIGIT(*(portp+1))) + req->testno = strtol(portp+1, NULL, 10); else req->testno = DOCNUMBER_CONNECT; } @@ -797,7 +798,7 @@ while(!done_processing && (req->offset < REQBUFSIZ-1)) { if(pipereq_length && pipereq) { memmove(reqbuf, pipereq, pipereq_length); - got = pipereq_length; + got = curlx_uztosz(pipereq_length); pipereq_length = 0; } else { @@ -1169,10 +1170,7 @@ int main(int argc, char *argv[]) { - struct sockaddr_in me; -#ifdef ENABLE_IPV6 - struct sockaddr_in6 me6; -#endif /* ENABLE_IPV6 */ + srvr_sockaddr_union_t me; curl_socket_t sock = CURL_SOCKET_BAD; curl_socket_t msgsock = CURL_SOCKET_BAD; int wrotepidfile = 0; @@ -1294,19 +1292,19 @@ #ifdef ENABLE_IPV6 if(!use_ipv6) { #endif - memset(&me, 0, sizeof(me)); - me.sin_family = AF_INET; - me.sin_addr.s_addr = INADDR_ANY; - me.sin_port = htons(port); - rc = bind(sock, (struct sockaddr *) &me, sizeof(me)); + memset(&me.sa4, 0, sizeof(me.sa4)); + me.sa4.sin_family = AF_INET; + me.sa4.sin_addr.s_addr = INADDR_ANY; + me.sa4.sin_port = htons(port); + rc = bind(sock, &me.sa, sizeof(me.sa4)); #ifdef ENABLE_IPV6 } else { - memset(&me6, 0, sizeof(me6)); - me6.sin6_family = AF_INET6; - me6.sin6_addr = in6addr_any; - me6.sin6_port = htons(port); - rc = bind(sock, (struct sockaddr *) &me6, sizeof(me6)); + memset(&me.sa6, 0, sizeof(me.sa6)); + me.sa6.sin6_family = AF_INET6; + me.sa6.sin6_addr = in6addr_any; + me.sa6.sin6_port = htons(port); + rc = bind(sock, &me.sa, sizeof(me.sa6)); } #endif /* ENABLE_IPV6 */ if(0 != rc) { diff -Nru curl-7.21.2/tests/server/server_sockaddr.h curl-7.21.3/tests/server/server_sockaddr.h --- curl-7.21.2/tests/server/server_sockaddr.h 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/tests/server/server_sockaddr.h 2010-12-01 19:45:49.000000000 +0100 @@ -0,0 +1,33 @@ +#ifndef HEADER_SERVER_SOCKADDR_H +#define HEADER_SERVER_SOCKADDR_H +/*************************************************************************** + * _ _ ____ _ + * Project ___| | | | _ \| | + * / __| | | | |_) | | + * | (__| |_| | _ <| |___ + * \___|\___/|_| \_\_____| + * + * Copyright (C) 1998 - 2010, Daniel Stenberg, , 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 http://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. + * + ***************************************************************************/ + +typedef union { + struct sockaddr sa; + struct sockaddr_in sa4; +#ifdef ENABLE_IPV6 + struct sockaddr_in6 sa6; +#endif +} srvr_sockaddr_union_t; + +#endif /* HEADER_SERVER_SOCKADDR_H */ diff -Nru curl-7.21.2/tests/server/sockfilt.c curl-7.21.3/tests/server/sockfilt.c --- curl-7.21.2/tests/server/sockfilt.c 2010-09-18 23:00:23.000000000 +0200 +++ curl-7.21.3/tests/server/sockfilt.c 2010-12-01 19:45:49.000000000 +0100 @@ -109,6 +109,7 @@ #include "getpart.h" #include "inet_pton.h" #include "util.h" +#include "server_sockaddr.h" /* include memdebug.h last */ #include "memdebug.h" @@ -688,10 +689,7 @@ unsigned short *listenport) { /* passive daemon style */ - struct sockaddr_in me; -#ifdef ENABLE_IPV6 - struct sockaddr_in6 me6; -#endif /* ENABLE_IPV6 */ + srvr_sockaddr_union_t listener; int flag; int rc; int totdelay = 0; @@ -742,19 +740,19 @@ #ifdef ENABLE_IPV6 if(!use_ipv6) { #endif - memset(&me, 0, sizeof(me)); - me.sin_family = AF_INET; - me.sin_addr.s_addr = INADDR_ANY; - me.sin_port = htons(*listenport); - rc = bind(sock, (struct sockaddr *) &me, sizeof(me)); + memset(&listener.sa4, 0, sizeof(listener.sa4)); + listener.sa4.sin_family = AF_INET; + listener.sa4.sin_addr.s_addr = INADDR_ANY; + listener.sa4.sin_port = htons(*listenport); + rc = bind(sock, &listener.sa, sizeof(listener.sa4)); #ifdef ENABLE_IPV6 } else { - memset(&me6, 0, sizeof(me6)); - me6.sin6_family = AF_INET6; - me6.sin6_addr = in6addr_any; - me6.sin6_port = htons(*listenport); - rc = bind(sock, (struct sockaddr *) &me6, sizeof(me6)); + memset(&listener.sa6, 0, sizeof(listener.sa6)); + listener.sa6.sin6_family = AF_INET6; + listener.sa6.sin6_addr = in6addr_any; + listener.sa6.sin6_port = htons(*listenport); + rc = bind(sock, &listener.sa, sizeof(listener.sa6)); } #endif /* ENABLE_IPV6 */ if(rc) { @@ -769,36 +767,30 @@ /* The system was supposed to choose a port number, figure out which port we actually got and update the listener port value with it. */ curl_socklen_t la_size; - struct sockaddr *localaddr; - struct sockaddr_in localaddr4; + srvr_sockaddr_union_t localaddr; #ifdef ENABLE_IPV6 - struct sockaddr_in6 localaddr6; - if(!use_ipv6) { + if(!use_ipv6) #endif - la_size = sizeof(localaddr4); - localaddr = (struct sockaddr *)&localaddr4; + la_size = sizeof(localaddr.sa4); #ifdef ENABLE_IPV6 - } - else { - la_size = sizeof(localaddr6); - localaddr = (struct sockaddr *)&localaddr6; - } + else + la_size = sizeof(localaddr.sa6); #endif - memset(localaddr, 0, (size_t)la_size); - if(getsockname(sock, localaddr, &la_size) < 0) { + memset(&localaddr.sa, 0, (size_t)la_size); + if(getsockname(sock, &localaddr.sa, &la_size) < 0) { error = SOCKERRNO; logmsg("getsockname() failed with error: (%d) %s", error, strerror(error)); sclose(sock); return CURL_SOCKET_BAD; } - switch (localaddr->sa_family) { + switch (localaddr.sa.sa_family) { case AF_INET: - *listenport = ntohs(localaddr4.sin_port); + *listenport = ntohs(localaddr.sa4.sin_port); break; #ifdef ENABLE_IPV6 case AF_INET6: - *listenport = ntohs(localaddr6.sin6_port); + *listenport = ntohs(localaddr.sa6.sin6_port); break; #endif default: @@ -831,10 +823,7 @@ int main(int argc, char *argv[]) { - struct sockaddr_in me; -#ifdef ENABLE_IPV6 - struct sockaddr_in6 me6; -#endif /* ENABLE_IPV6 */ + srvr_sockaddr_union_t me; curl_socket_t sock = CURL_SOCKET_BAD; curl_socket_t msgsock = CURL_SOCKET_BAD; int wrotepidfile = 0; @@ -970,26 +959,26 @@ #ifdef ENABLE_IPV6 if(!use_ipv6) { #endif - memset(&me, 0, sizeof(me)); - me.sin_family = AF_INET; - me.sin_port = htons(connectport); - me.sin_addr.s_addr = INADDR_ANY; + memset(&me.sa4, 0, sizeof(me.sa4)); + me.sa4.sin_family = AF_INET; + me.sa4.sin_port = htons(connectport); + me.sa4.sin_addr.s_addr = INADDR_ANY; if (!addr) addr = "127.0.0.1"; - Curl_inet_pton(AF_INET, addr, &me.sin_addr); + Curl_inet_pton(AF_INET, addr, &me.sa4.sin_addr); - rc = connect(sock, (struct sockaddr *) &me, sizeof(me)); + rc = connect(sock, &me.sa, sizeof(me.sa4)); #ifdef ENABLE_IPV6 } else { - memset(&me6, 0, sizeof(me6)); - me6.sin6_family = AF_INET6; - me6.sin6_port = htons(connectport); + memset(&me.sa6, 0, sizeof(me.sa6)); + me.sa6.sin6_family = AF_INET6; + me.sa6.sin6_port = htons(connectport); if (!addr) addr = "::1"; - Curl_inet_pton(AF_INET6, addr, &me6.sin6_addr); + Curl_inet_pton(AF_INET6, addr, &me.sa6.sin6_addr); - rc = connect(sock, (struct sockaddr *) &me6, sizeof(me6)); + rc = connect(sock, &me.sa, sizeof(me.sa6)); } #endif /* ENABLE_IPV6 */ if(rc) { diff -Nru curl-7.21.2/tests/server/sws.c curl-7.21.3/tests/server/sws.c --- curl-7.21.2/tests/server/sws.c 2010-10-10 23:22:27.000000000 +0200 +++ curl-7.21.3/tests/server/sws.c 2010-12-06 15:30:50.000000000 +0100 @@ -59,6 +59,7 @@ #include "curlx.h" /* from the private lib dir */ #include "getpart.h" #include "util.h" +#include "server_sockaddr.h" /* include memdebug.h last */ #include "memdebug.h" @@ -162,7 +163,7 @@ DOCNUMBER_404 = -1 }; -const char *end_of_headers = END_OF_HEADERS; +static const char *end_of_headers = END_OF_HEADERS; /* sent as reply to a QUIT */ static const char *docquit = @@ -466,8 +467,8 @@ /* if the host name starts with test, the port number used in the CONNECT line will be used as test number! */ char *portp = strchr(doc, ':'); - if(portp) - req->testno = atoi(portp+1); + if(portp && (*(portp+1) != '\0') && ISDIGIT(*(portp+1))) + req->testno = strtol(portp+1, NULL, 10); else req->testno = DOCNUMBER_CONNECT; } @@ -761,7 +762,7 @@ while(!done_processing && (req->offset < REQBUFSIZ-1)) { if(pipereq_length && pipereq) { memmove(reqbuf, pipereq, pipereq_length); - got = pipereq_length; + got = curlx_uztosz(pipereq_length); pipereq_length = 0; } else { @@ -1116,10 +1117,7 @@ int main(int argc, char *argv[]) { - struct sockaddr_in me; -#ifdef ENABLE_IPV6 - struct sockaddr_in6 me6; -#endif /* ENABLE_IPV6 */ + srvr_sockaddr_union_t me; curl_socket_t sock = CURL_SOCKET_BAD; curl_socket_t msgsock = CURL_SOCKET_BAD; int wrotepidfile = 0; @@ -1260,19 +1258,19 @@ #ifdef ENABLE_IPV6 if(!use_ipv6) { #endif - memset(&me, 0, sizeof(me)); - me.sin_family = AF_INET; - me.sin_addr.s_addr = INADDR_ANY; - me.sin_port = htons(port); - rc = bind(sock, (struct sockaddr *) &me, sizeof(me)); + memset(&me.sa4, 0, sizeof(me.sa4)); + me.sa4.sin_family = AF_INET; + me.sa4.sin_addr.s_addr = INADDR_ANY; + me.sa4.sin_port = htons(port); + rc = bind(sock, &me.sa, sizeof(me.sa4)); #ifdef ENABLE_IPV6 } else { - memset(&me6, 0, sizeof(me6)); - me6.sin6_family = AF_INET6; - me6.sin6_addr = in6addr_any; - me6.sin6_port = htons(port); - rc = bind(sock, (struct sockaddr *) &me6, sizeof(me6)); + memset(&me.sa6, 0, sizeof(me.sa6)); + me.sa6.sin6_family = AF_INET6; + me.sa6.sin6_addr = in6addr_any; + me.sa6.sin6_port = htons(port); + rc = bind(sock, &me.sa, sizeof(me.sa6)); } #endif /* ENABLE_IPV6 */ if(0 != rc) { diff -Nru curl-7.21.2/tests/server/tftpd.c curl-7.21.3/tests/server/tftpd.c --- curl-7.21.2/tests/server/tftpd.c 2010-09-18 23:00:23.000000000 +0200 +++ curl-7.21.3/tests/server/tftpd.c 2010-12-01 19:45:49.000000000 +0100 @@ -96,6 +96,7 @@ #include "curlx.h" /* from the private lib dir */ #include "getpart.h" #include "util.h" +#include "server_sockaddr.h" /* include memdebug.h last */ #include "memdebug.h" @@ -127,6 +128,11 @@ const char *e_msg; }; +typedef union { + struct tftphdr hdr; + char storage[PKTSIZE]; +} tftphdr_storage_t; + /* * bf.counter values in range [-1 .. SEGSIZE] represents size of data in the * bf.buf buffer. Additionally it can also hold flags BF_ALLOC or BF_FREE. @@ -134,7 +140,7 @@ struct bf { int counter; /* size of data in buffer, or flag */ - char buf[PKTSIZE]; /* room for data packet */ + tftphdr_storage_t buf; /* room for data packet */ }; #define BF_ALLOC -3 /* alloc'd but not yet filled */ @@ -190,10 +196,10 @@ static int newline = 0; /* fillbuf: in middle of newline expansion */ static int prevchar = -1; /* putbuf: previous char (cr check) */ -static char buf[PKTSIZE]; -static char ackbuf[PKTSIZE]; +static tftphdr_storage_t buf; +static tftphdr_storage_t ackbuf; -static struct sockaddr_in from; +static srvr_sockaddr_union_t from; static curl_socklen_t fromlen; static curl_socket_t peer = CURL_SOCKET_BAD; @@ -435,7 +441,7 @@ current = 0; bfs[1].counter = BF_FREE; nextone = x; /* ahead or behind? */ - return (struct tftphdr *)bfs[0].buf; + return &bfs[0].buf.hdr; } static struct tftphdr *w_init(void) @@ -463,7 +469,7 @@ if (b->counter == BF_FREE) /* if it's empty */ read_ahead(test, convert); /* fill it */ - *dpp = (struct tftphdr *)b->buf; /* set caller's ptr */ + *dpp = &b->buf.hdr; /* set caller's ptr */ return b->counter; } @@ -485,7 +491,7 @@ return; nextone = !nextone; /* "incr" next buffer ptr */ - dp = (struct tftphdr *)b->buf; + dp = &b->buf.hdr; if (convert == 0) { /* The former file reading code did this: @@ -539,7 +545,7 @@ if (bfs[current].counter != BF_FREE) /* if not free */ write_behind(test, convert); /* flush it */ bfs[current].counter = BF_ALLOC; /* mark as alloc'd */ - *dpp = (struct tftphdr *)bfs[current].buf; + *dpp = &bfs[current].buf.hdr; return ct; /* this is a lie of course */ } @@ -575,7 +581,7 @@ count = b->counter; /* remember byte count */ b->counter = BF_FREE; /* reset flag */ - dp = (struct tftphdr *)b->buf; + dp = &b->buf.hdr; nextone = !nextone; /* incr for next time */ writebuf = dp->th_data; @@ -627,7 +633,7 @@ #endif int j = 0; char rbuf[PKTSIZE]; - struct sockaddr_in fromaddr; + srvr_sockaddr_union_t fromaddr; curl_socklen_t fromaddrlen; for (;;) { @@ -638,9 +644,16 @@ #endif if (i) { j++; - fromaddrlen = sizeof(fromaddr); - (void)recvfrom(f, rbuf, sizeof(rbuf), 0, - (struct sockaddr *)&fromaddr, &fromaddrlen); +#ifdef ENABLE_IPV6 + if(!use_ipv6) +#endif + fromaddrlen = sizeof(fromaddr.sa4); +#ifdef ENABLE_IPV6 + else + fromaddrlen = sizeof(fromaddr.sa6); +#endif + (void) recvfrom(f, rbuf, sizeof(rbuf), 0, + &fromaddr.sa, &fromaddrlen); } else break; @@ -650,11 +663,7 @@ int main(int argc, char **argv) { - struct sockaddr_in me; -#ifdef ENABLE_IPV6 - struct sockaddr_in6 me6; -#endif /* ENABLE_IPV6 */ - + srvr_sockaddr_union_t me; struct tftphdr *tp; ssize_t n = 0; int arg = 1; @@ -778,19 +787,19 @@ #ifdef ENABLE_IPV6 if(!use_ipv6) { #endif - memset(&me, 0, sizeof(me)); - me.sin_family = AF_INET; - me.sin_addr.s_addr = INADDR_ANY; - me.sin_port = htons(port); - rc = bind(sock, (struct sockaddr *) &me, sizeof(me)); + memset(&me.sa4, 0, sizeof(me.sa4)); + me.sa4.sin_family = AF_INET; + me.sa4.sin_addr.s_addr = INADDR_ANY; + me.sa4.sin_port = htons(port); + rc = bind(sock, &me.sa, sizeof(me.sa4)); #ifdef ENABLE_IPV6 } else { - memset(&me6, 0, sizeof(me6)); - me6.sin6_family = AF_INET6; - me6.sin6_addr = in6addr_any; - me6.sin6_port = htons(port); - rc = bind(sock, (struct sockaddr *) &me6, sizeof(me6)); + memset(&me.sa6, 0, sizeof(me.sa6)); + me.sa6.sin6_family = AF_INET6; + me.sa6.sin6_addr = in6addr_any; + me.sa6.sin6_port = htons(port); + rc = bind(sock, &me.sa, sizeof(me.sa6)); } #endif /* ENABLE_IPV6 */ if(0 != rc) { @@ -811,8 +820,16 @@ for (;;) { fromlen = sizeof(from); - n = (ssize_t)recvfrom(sock, buf, sizeof(buf), 0, - (struct sockaddr *)&from, &fromlen); +#ifdef ENABLE_IPV6 + if(!use_ipv6) +#endif + fromlen = sizeof(from.sa4); +#ifdef ENABLE_IPV6 + else + fromlen = sizeof(from.sa6); +#endif + n = (ssize_t)recvfrom(sock, &buf.storage[0], sizeof(buf.storage), 0, + &from.sa, &fromlen); if(got_exit_signal) break; if (n < 0) { @@ -824,23 +841,42 @@ set_advisor_read_lock(SERVERLOGS_LOCK); serverlogslocked = 1; - from.sin_family = AF_INET; - - peer = socket(AF_INET, SOCK_DGRAM, 0); - if(CURL_SOCKET_BAD == peer) { - logmsg("socket"); - result = 2; - break; +#ifdef ENABLE_IPV6 + if(!use_ipv6) { +#endif + from.sa4.sin_family = AF_INET; + peer = socket(AF_INET, SOCK_DGRAM, 0); + if(CURL_SOCKET_BAD == peer) { + logmsg("socket"); + result = 2; + break; + } + if(connect(peer, &from.sa, sizeof(from.sa4)) < 0) { + logmsg("connect: fail"); + result = 1; + break; + } +#ifdef ENABLE_IPV6 } - - if (connect(peer, (struct sockaddr *)&from, sizeof(from)) < 0) { - logmsg("connect: fail"); - result = 1; - break; + else { + from.sa6.sin6_family = AF_INET6; + peer = socket(AF_INET6, SOCK_DGRAM, 0); + if(CURL_SOCKET_BAD == peer) { + logmsg("socket"); + result = 2; + break; + } + if (connect(peer, &from.sa, sizeof(from.sa6)) < 0) { + logmsg("connect: fail"); + result = 1; + break; + } } +#endif + maxtimeout = 5*TIMEOUT; - tp = (struct tftphdr *)buf; + tp = &buf.hdr; tp->th_opcode = ntohs(tp->th_opcode); if (tp->th_opcode == opcode_RRQ || tp->th_opcode == opcode_WRQ) { memset(&test, 0, sizeof(test)); @@ -935,7 +971,7 @@ cp = (char *)&tp->th_stuff; filename = cp; again: - while (cp < buf + size) { + while (cp < &buf.storage[size]) { if (*cp == '\0') break; cp++; @@ -1089,7 +1125,7 @@ mysignal(SIGALRM, timer); #endif sdp = r_init(); - sap = (struct tftphdr *)ackbuf; + sap = &ackbuf.hdr; do { size = readit(test, &sdp, pf->f_convert); if (size < 0) { @@ -1112,7 +1148,7 @@ #ifdef HAVE_ALARM alarm(rexmtval); /* read the ack */ #endif - n = sread(peer, ackbuf, sizeof (ackbuf)); + n = sread(peer, &ackbuf.storage[0], sizeof(ackbuf.storage)); #ifdef HAVE_ALARM alarm(0); #endif @@ -1157,7 +1193,7 @@ mysignal(SIGALRM, timer); #endif rdp = w_init(); - rap = (struct tftphdr *)ackbuf; + rap = &ackbuf.hdr; do { timeout = 0; rap->th_opcode = htons((u_short)opcode_ACK); @@ -1167,7 +1203,7 @@ (void) sigsetjmp(timeoutbuf, 1); #endif send_ack: - if (swrite(peer, ackbuf, 4) != 4) { + if (swrite(peer, &ackbuf.storage[0], 4) != 4) { logmsg("write: fail\n"); goto abort; } @@ -1214,21 +1250,22 @@ rap->th_opcode = htons((u_short)opcode_ACK); /* send the "final" ack */ rap->th_block = htons((u_short)recvblock); - (void) swrite(peer, ackbuf, 4); + (void) swrite(peer, &ackbuf.storage[0], 4); #if defined(HAVE_ALARM) && defined(SIGALRM) mysignal(SIGALRM, justtimeout); /* just abort read on timeout */ alarm(rexmtval); #endif - n = sread(peer, buf, sizeof(buf)); /* normally times out and quits */ + /* normally times out and quits */ + n = sread(peer, &buf.storage[0], sizeof(buf.storage)); #ifdef HAVE_ALARM alarm(0); #endif if(got_exit_signal) goto abort; - if (n >= 4 && /* if read some data */ - rdp->th_opcode == opcode_DATA && /* and got a data block */ - recvblock == rdp->th_block) { /* then my last ack was lost */ - (void) swrite(peer, ackbuf, 4); /* resend final ack */ + if (n >= 4 && /* if read some data */ + rdp->th_opcode == opcode_DATA && /* and got a data block */ + recvblock == rdp->th_block) { /* then my last ack was lost */ + (void) swrite(peer, &ackbuf.storage[0], 4); /* resend final ack */ } abort: return; @@ -1244,7 +1281,7 @@ int length; struct errmsg *pe; - tp = (struct tftphdr *)buf; + tp = &buf.hdr; tp->th_opcode = htons((u_short)opcode_ERROR); tp->th_code = htons((u_short)error); for (pe = errmsgs; pe->e_code >= 0; pe++) @@ -1258,6 +1295,6 @@ length = (int)strlen(pe->e_msg); tp->th_msg[length] = '\0'; length += 5; - if (swrite(peer, buf, length) != length) + if (swrite(peer, &buf.storage[0], length) != length) logmsg("nak: fail\n"); } diff -Nru curl-7.21.2/tests/symbol-scan.pl curl-7.21.3/tests/symbol-scan.pl --- curl-7.21.2/tests/symbol-scan.pl 1970-01-01 01:00:00.000000000 +0100 +++ curl-7.21.3/tests/symbol-scan.pl 2010-12-01 19:45:49.000000000 +0100 @@ -0,0 +1,162 @@ +#!/usr/bin/env perl +#*************************************************************************** +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# Copyright (C) 2010, Daniel Stenberg, , 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 http://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. +# +########################################################################### +# +# This script grew out of help from Przemyslaw Iskra and Balint Szilakszi +# a late evening in the #curl IRC channel on freenode. +# + +use strict; +use warnings; + +# +# configurehelp perl module is generated by configure script +# +use configurehelp qw( + $Cpreprocessor + ); + +# we may get the dir root pointed out +my $root=$ARGV[0] || "."; + +# need an include directory when building out-of-tree +my $i = ($ARGV[1]) ? "-I$ARGV[1] " : ''; + +my $h = "$root/include/curl/curl.h"; +my $mh = "$root/include/curl/multi.h"; + +my $verbose=0; +my $summary=0; +my $misses=0; + +my @syms; +my %doc; +my %rem; + +open H_IN, "-|", "$Cpreprocessor $i$h" || die "Cannot preprocess curl.h"; +while ( ) { + if ( /enum\s+(\S+\s+)?{/ .. /}/ ) { + s/^\s+//; + next unless /^CURL/; + chomp; + s/[,\s].*//; + push @syms, $_; + } +} +close H_IN || die "Error preprocessing curl.h"; + +sub scanheader { + my ($f)=@_; + open H, "<$f"; + while() { + if (/^#define (CURL[A-Za-z0-9_]*)/) { + push @syms, $1; + } + } + close H; +} + +scanheader($h); +scanheader($mh); + +open S, "<$root/docs/libcurl/symbols-in-versions"; +while() { + if(/(^CURL[^ \n]*) *(.*)/) { + my ($sym, $rest)=($1, $2); + $doc{$sym}=$sym; + my @a=split(/ +/, $rest); + if($a[2]) { + # this symbol is documented to have been present the last time + # in this release + $rem{$sym}=$a[2]; + } + } +} +close S; + +my $ignored=0; +for my $e (sort @syms) { + # OBSOLETE - names that are just placeholders for a position where we + # previously had a name, that is now removed. The OBSOLETE names should + # never be used for anything. + # + # CURL_EXTERN - is a define used for libcurl functions that are external, + # public. No app or other code should ever use it. + # + # *_LAST and *_LASTENTRY are just prefix for the placeholders used for the + # last entry in many enum series. + # + + if($e =~ /(OBSOLETE|^CURL_EXTERN|_LAST\z|_LASTENTRY\z)/) { + $ignored++; + next; + } + if($doc{$e}) { + if($verbose) { + print $e."\n"; + } + $doc{$e}="used"; + next; + } + else { + print $e."\n"; + $misses++; + } +} + +# +# now scan through all symbols that were present in the symbols-in-versions +# but not in the headers +# +# If the symbols were marked 'removed' in symbols-in-versions we don't output +# anything about it since that is perfectly fine. +# + +my $anyremoved; + +for my $e (sort keys %doc) { + if(($doc{$e} ne "used") && !$rem{$e}) { + + if(!$anyremoved++) { + print "Missing symbols mentioned in symbols-in-versions\n"; + print "Add them to a header, or mark them as removed.\n"; + } + + print "$e\n"; + $misses++; + } +} + +if($summary) { + print "Summary:\n"; + printf "%d symbols in headers (out of which %d are ignored)\n", scalar(@syms), + $ignored; + printf "%d symbols in headers are interesting\n", + scalar(@syms)- $ignored; + printf "%d symbols are listed in symbols-in-versions\n (out of which %d are listed as removed)\n", scalar(keys %doc), scalar(keys %rem); + printf "%d symbols in symbols-in-versions should match the ones in headers\n", scalar(keys %doc) - scalar(keys %rem); + +} + +if($misses) { + exit 2; # there are stuff to attend to! +} diff -Nru curl-7.21.2/tests/testcurl.pl curl-7.21.3/tests/testcurl.pl --- curl-7.21.2/tests/testcurl.pl 2010-09-18 23:00:23.000000000 +0200 +++ curl-7.21.3/tests/testcurl.pl 2010-10-14 14:09:00.000000000 +0200 @@ -49,6 +49,7 @@ # --nocvsup Don't pull from git even though it is a git tree # --nogitpull Don't pull from git even though it is a git tree # --nobuildconf Don't run buildconf +# --noconfigure Don't run configure # --runtestopts=[options] Options to pass to runtests.pl # --setup=[file name] File name to read setup from (deprecated) # --target=[your os] Specify your target environment. @@ -84,6 +85,7 @@ $git=1; $setupfile = 'setup'; +$configurebuild = 1; while ($ARGV[0]) { if ($ARGV[0] =~ /--target=/) { $targetos = (split(/=/, shift @ARGV))[1]; @@ -117,6 +119,10 @@ $nobuildconf=1; shift @ARGV; } + elsif ($ARGV[0] =~ /--noconfigure/) { + $configurebuild=0; + shift @ARGV; + } elsif ($ARGV[0] =~ /--crosscompile/) { $crosscompile=1; shift @ARGV; @@ -131,7 +137,6 @@ } # Do the platform-specific stuff here -$configurebuild = 1; $confheader = 'curl_config.h'; $binext = ''; $libext = '.la'; # .la since both libcurl and libcares are made with libtool